【问题标题】:How to enable / disable a JSF Command Button [duplicate]如何启用/禁用 JSF 命令按钮 [重复]
【发布时间】:2012-01-31 13:05:09
【问题描述】:

场景如下:

屏幕上有两个按钮,比如 button1 和 button2。在页面加载时,button2 被禁用。当用户点击 button1 时, button2 将被启用。我使用javascript window.onload 事件和button1 上的onclick 事件实现了这个功能。我的问题是,当用户单击 button1 时,它会触发页面重新加载。话虽如此,在重新加载页面后,由于 onload 事件,button2 被禁用。

还有其他方法可以实现此功能吗?

顺便说一句,我使用的是 primefaces。

【问题讨论】:

标签: jsf primefaces


【解决方案1】:

primeface页面是这样的,

 <p:commandButton update="panel1"  actionListener="#{bean.button1}" value="button1" disabled="#{bean.disable}"> 
     <f:setPropertyActionListener value="#{false}" target="#{bean.disable}"/>   
 </p:commandButton> 


 <p:commandButton update="panel2"  actionListener="#{bean.button2}" value="button1" disabled="#{!(bean.disable)}"> 
     <f:setPropertyActionListener value="#{true}" target="#{bean.disable}"/>    
 </p:commandButton> 

管理 Bean:

 public class Bean {

    private boolean disable;

    // default constructor 
    public Bean(){
       this.disable= false;
    }

    public boolean isDisable() {
       return disable;
    }
    public void setDisable(boolean disable) {
       this.disable = disable;
    }
}

【讨论】:

  • 你为什么打电话给actionListener
  • @Kushan:你能解释一下,你为什么用actionListener
  • disabled="#{bean.disable}" 就足够了。您可以只使用这个,但也可以集中在(布尔)isDisable 逻辑中!
【解决方案2】:

在我看来,有很多更简单的方法。

只需在带有javax.faces.bean.ViewScopedjavax.faces.bean.ManagedBean 注释的managed bean 中创建一个boolean 属性(带有getter + setter)。

您可以通过此属性 (button2State) 处理禁用状态。

<h:form>
    <p:commandButton id="button1" update="button2"
        action="#{bean.setButton2State(false)}"
        value="Enable second button" />
    <p:commandButton id="button2" disabled="#{bean.button2State}"
        value="button disabled one page load" />
</h:form>

第一个按钮调用属性的setter并将button2State设置为false以启用该按钮。此示例还使用 ajax 仅更新按钮。

【讨论】:

    【解决方案3】:

    如果您使用的是 JSF 2.0,则可以使用 f:ajax 标记来完成此操作。

    您可以在 bean 中禁用带有条件的按钮

    disabled="#{bean.isDisabled}"
    

    当您点击按钮 1 时重新呈现按钮时,可以启用该按钮。

    【讨论】:

      猜你喜欢
      • 2011-04-03
      • 2015-05-28
      • 2010-11-17
      • 2019-05-24
      • 1970-01-01
      • 2012-08-28
      • 2015-03-25
      • 2017-03-27
      • 1970-01-01
      相关资源
      最近更新 更多