JSF两个需要h:inputText(独占或)

use*_*743 1 java jsf

我想要2个imputText是必需的:如果重视电子邮件,则不需要手机,反之亦然.我能怎么做?

谢谢.

                <h:inputText required="true" id="usEmail" size="20"
                    value="#{rwUser.usEmail}" />

                <h:message for="usEmail" style="color:red" />


                    <h:outputText value="#{msg.mobilephone}" styleClass="textMessage" />

                <h:inputText id="usMobilephone" size="20"
                    value="#{rwUser.usMobilephone}" />

                <h:message for="usMobilephone" style="color:red" />
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 8

几种方式.

  • UIInput组件绑定到视图和第一个的必需属性中,检查第二个的提交值,并在第二个的必需属性中,检查第一个的值(组件是按照它们出现的顺序处理的视图).

    <h:inputText binding="#{usEmail}" ... required="#{empty usMobilePhone.submittedValue}" />    
    <h:inputText binding="#{usMobilePhone}" ... required="#{empty usEmail.value}" />
    
    Run Code Online (Sandbox Code Playgroud)
  • 检查请求参数映射中是否存在提交的值.

    <h:inputText binding="#{usEmail}" ... required="#{empty param[usMobilePhone.clientId]}" />    
    <h:inputText binding="#{usMobilePhone}" ... required="#{empty param[usEmail.clientId]}" />
    
    Run Code Online (Sandbox Code Playgroud)

    或者使用硬编码的客户端ID:

    <h:form id="form">
        <h:inputText id="usEmail" ... required="#{empty param['form:usMobilePhone']}" />    
        <h:inputText id="usMobilePhone" ... required="#{empty param['form:usEmail']}" />
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用OmniFaces <o:validateOneOrMore>.

    <h:inputText id="usEmail" ... />    
    <h:inputText id="usMobilePhone" ... />
    <o:validateOneOrMore components="usEmail usMobilePhone" showMessageFor="@all" />
    
    Run Code Online (Sandbox Code Playgroud)