我是JSF(PrimeFaces)的新手.
我有两个commandButtons Do和Undo.我希望一次只能看到一个按钮.
比如,当我单击"执行"按钮时,单击"执行"按钮应该隐藏(同时执行其操作),撤消按钮应该是可见的,当我单击"撤消"按钮时,单击它应该隐藏,"执行"按钮应该恢复为活动状态
我尝试使用enable()和disable()方法,但没有用.我可以帮助实现这一目标吗?任何预定义方法可用?
听到渲染的属性将有所帮助,但无法理解该属性究竟会做什么.有人可以解释一下
JSF rendered属性将定义组件是否应该呈现/可见.
如果
<h:commandButton value="Undo" rendered="#{false}" />
Run Code Online (Sandbox Code Playgroud)
然后您的上方Undo按钮将被隐藏.
rendered属性可以绑定到ManagedBean属性.如果您想要这种动态,您必须更新组件以查看结果.
这是一个小例子:XHTML:
<h:panelGroup id="doBtnPG">
<h:commandButton value="Do" rendered="#{myBean.showDo}" action="#{myBean.doAction}">
<f:ajax render="unDoBtnPG"/>
</h:commandButton>
</h:panelGroup>
<h:panelGroup id="unDoBtnPG">
<h:commandButton value="Un Do" rendered="#{myBean.showUndo}" action="#{myBean.undoAction}">
<f:ajax render="doBtnPG"/>
</h:commandButton>
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)
ManagedBean:
@ManagedBean
@ViewScoped
public class MyBean{
private boolean showDo=true;
private boolean showUndo=true;
public void doAction(){
showUndo=false;
}
public void undoAction(){
showDo=false;
}
//SETTER and GETTERS
}
Run Code Online (Sandbox Code Playgroud)
在上述例子中,在点击一个按钮相应的操作方法,使在其上的其它按钮被呈现为属性false,f:ajax将重新渲染/更新其他按钮的panelGroup,以反映变化.
由于您将此问题标记为Primefaces,这里是Primefaces的XHTML代码:
<h:panelGroup id="doBtnPG">
<p:commandButton value="Do" rendered="#{myBean.showDo}"
action="#{myBean.doAction}" update="unDoBtnPG"/>
</h:panelGroup>
<h:panelGroup id="unDoBtnPG">
<p:commandButton value="Un Do" rendered="#{myBean.showUndo}"
action="#{myBean.undoAction}" update="doBtnPG"/>
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)
请注意,在Primefaces上,commandButtons您不需要使用f:ajax或p:ajax显式,因为默认情况下它们是Ajax.
请注意,功能enable()和disable()通过Primefaces提供了唯一的客户端.当disabled属性为false,如果您启用该按钮enable(),则不会触发您的操作方法.
| 归档时间: |
|
| 查看次数: |
18545 次 |
| 最近记录: |