gpt4 book ai didi

jsf - 在jsf中隐藏和显示commandButton

转载 作者:行者123 更新时间:2023-12-04 17:45:29 24 4
gpt4 key购买 nike

我是 JSF(PrimeFaces)的新手。

我有两个 命令按钮 执行和撤消。我希望一次只显示一个按钮。

比如,当我点击 Do 按钮时,onclicking Do 按钮应该隐藏(同时执行它的 Action )并且 Undo 按钮应该是可见的
当我单击撤消按钮时单击它应该隐藏并且执行按钮应该回到事件状态

我尝试使用
enable() 和 disable() 方法,但没有用。
我能得到一些帮助来实现这一目标吗?任何可用的预定义方法?

听说渲染属性会有所帮助,但无法理解该属性究竟会做什么。
有人可以解释一下吗

最佳答案

JSF rendered属性将定义组件是否应该被渲染/可见。
如果

<h:commandButton value="Undo" rendered="#{false}" />

然后你上面的 Undo按钮将被隐藏。
rendered属性可以绑定(bind)到 ManagedBean属性(property)。如果你想要这个动态,你必须更新组件才能看到结果。

这是一个小例子:
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>

托管 bean :
@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
}

在上面的示例中,单击一个按钮时,相应的操作方法将呈现另一个按钮的属性设置为 false , f:ajax将重新渲染/更新另一个按钮的 panelGroup来反射(reflect)变化。

由于您将此问题标记为 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>

请注意,在 Primefaces commandButtons你不需要使用 f:ajaxp:ajax明确地因为它们默认是 Ajax。

请注意函数 enable()disable() Primefaces 提供的只是客户端。当 disabled属性为 false如果您使用 enable() 启用按钮,它不会触发您的操作方法。

关于jsf - 在jsf中隐藏和显示commandButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35994194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com