我的jsf页面中有5个输入文本。我想实现这样的功能,即如果在第一个输入文本中输入了一些文本,则应禁用其余4。如果在剩下的4个输入文本中的任何一个中输入了任何文本,则第一个输入文本应被取消标记。我是jsf的新手,不知道如何做到这一点。任何人都请帮忙。
在JSF2中,您可以通过这个来实现。
<h:inputText id="inputOne" value="#{bean.value1}" disabled="#{not empty bean.value2}">
<f:ajax event="keyup" render="inputTwo"/>
</h:inputText>
<h:inputText id="inputTwo" value="#{bean.value2}" disabled="#{not empty bean.value1}">
<f:ajax event="keyup" render="inputOne"/>
</h:inputText>
如果您有很多字段,最好在#{bean}
中引入方法,以比#{not empty bean.value1 and not empty bean.value2 and not empty bean.value3}
更简单的方式执行所有检查
如果有许多分组输入应被禁用,您可以在<f:ajax>
标记的render
属性中以空格分隔列出它们,也可以用<h:panelGroup/>
对它们进行分组并渲染整个组。
<h:inputText id="inputOne" value="#{bean.value1}" disabled="#{not empty bean.value2 and not empty bean.value3 and not empty bean.value4}">
<f:ajax event="keyup" render="inputs"/>
</h:inputText>
<h:panelGroup id="inputs">
<h:inputText value="#{bean.value2}" disabled="#{not empty bean.value1}">
<f:ajax event="keyup" render="inputOne"/>
</h:inputText>
<h:inputText value="#{bean.value3}" disabled="#{not empty bean.value1}">
<f:ajax event="keyup" render="inputOne"/>
</h:inputText>
<h:inputText value="#{bean.value4}" disabled="#{not empty bean.value1}">
<f:ajax event="keyup" render="inputOne"/>
</h:inputText>
</h:panelGroup>