填写其他输入时禁用一个输入

Disable one input when other input is filled out

如果输入 p:calendar 值,我想禁用其他输入标签

  <p:calendar id="someDate" value=.... binding="#{bind}" />

例如禁用 p:selectOneMenu 但这会永久禁用它。

 <p:selectOneMenu id="selectManu" value=... disabled="#{bind!=null}" >

如何仅在 p:calendar 有值时禁用它??

让源组件ajax-根据需要的事件更新目标组件,并让目标组件的disabled属性检查源组件的value是否是not empty.

所以,

<p:calendar ... value="#{bean.date}">
    <p:ajax event="valueChange" update="menu" />
    <p:ajax event="dateSelect" update="menu" />
</p:calendar>
...
<p:selectOneMenu id="menu" ... disabled="#{not empty bean.date}" />

binding 在此构造中不是必需的。如果你真的想要使用它,那么你应该检查组件的value属性,而不是组件本身(显然永远不会null)。

<p:calendar binding="#{calendar}" ...>
    <p:ajax event="valueChange" update="menu" />
    <p:ajax event="dateSelect" update="menu" />
</p:calendar>
...
<p:selectOneMenu id="menu" ... disabled="#{not empty calendar.value}" />

如果您想了解有关 binding 的更多信息,请前往 How does the 'binding' attribute work in JSF? When and how should it be used?