【问题标题】:How to disable Submit button if nothing is selected in Primefaces SelectOneMenu如果在 Primefaces SelectOneMenu 中未选择任何内容,如何禁用提交按钮
【发布时间】:2013-02-21 04:12:14
【问题描述】:

我有一个p:selectOneMenu,其第一个元素是字符串“请选择”,其他项目是要选择的列表。我可以在选择“请选择”时禁用提交按钮并在选择其他元素时启用按钮吗?我知道itemDisabled可以使用,但这不是我的要求。

<p:selectOneMenu value="#{bean.value}" id="selectId"
    filter="true" required="true" converter="itemConverter"
    filterMatchMode="contains" height="120">
    <f:selectItem itemLabel="Please select"/>
    <f:selectItems value="#{listBean.selectItemList}"></f:selectItems>
</p:selectOneMenu>

基本上,我希望在选择第一个项目时禁用提交按钮。

有人可以帮忙吗?

【问题讨论】:

    标签: jsf-2 primefaces


    【解决方案1】:

    你最好更换

    <f:selectItem itemLabel="Please select"/>
    

    <f:selectItem noSelectionOption="true" itemLabel="Please select"></f:selectItem>
    

    让jsf为你处理required...


    如果您真的想禁用该按钮,只需使用#{bean.value}

    喜欢这个

    <p:commandButton id="myButonId" disabled="#{empty bean.value}"....
    

    并将&lt;p:ajax update="myButonId" 添加到您的&lt;p:selectOneMenu

    【讨论】:

    • 知道这个解决方案,但只是想知道按钮是否可以被禁用。
    【解决方案2】:

    你好拉贾特, 为什么不能在 backingbean 中使用 SelectItemList 并从 backingbean 向该列表添加标签和值?这样做的好处是,您可以将“请选择”添加为 SelectItemList 中的第一个标签,并将值添加为 null。因此,为了禁用 SubmitButton,您可以有一个 boolean flag 可以根据 SelectItemList 中的值设置为 true 或 false(使用 valuechangeListener 并相应地更新布尔标志方法 )。希望此解决方案对您有所帮助。

    【讨论】:

    • 缺点是它会使模型与视图特定的东西混淆。在视图中有一个默认的“请选择”项可以使模型保持干净,避免视图特定的混乱。
    猜你喜欢
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多