【问题标题】:hiding and showing commandButton in jsf在jsf中隐藏和显示commandButton
【发布时间】:2016-03-14 17:28:27
【问题描述】:

我是 JSF(PrimeFaces) 的新手。

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

就像,当我点击 Do 按钮时,onclicking Do 按钮应该隐藏(同时执行其操作)并且 Undo 按钮应该是可见的 当我单击撤消按钮时,它应该隐藏并且执行按钮应该回到活动状态

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

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

【问题讨论】:

  • rendered 属性指定是否渲染组件,不要与使组件渲染但不可用(在您的情况下可单击)的 disabled 属性混淆。能否提供两个按钮的代码?

标签: jsf primefaces


【解决方案1】:

JSF rendered 属性将定义组件是否应呈现/可见。
如果

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

然后你上面的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>

托管豆:

@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
}

在上面的例子中,当点击一个按钮时,相应的动作方法使得另一个按钮被渲染的属性为falsef: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>

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

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

【讨论】:

    猜你喜欢
    • 2014-07-31
    • 1970-01-01
    • 2011-06-23
    • 2016-03-10
    • 2011-03-10
    • 2017-09-13
    • 2013-07-23
    • 2011-06-12
    • 1970-01-01
    相关资源
    最近更新 更多