required attribute of inputText should depend on submitted value of another component

后端 未结 2 392
野的像风
野的像风 2020-12-29 00:20

I have a form which contains a dropdown and two input fields.




I would

相关标签:
2条回答
  • 2020-12-29 00:47

    Assuming you are using JSF 2.0: Let your SelectOneListBox execute with ajax and re-render the input fields on change of the list box:

    A quick sketch:

    <h:selectOneMenu value="#{myBean.myMenuValue}">
      <f:ajax render="input1"/>
       ..
    </h:selectOneMenu>
    
    <h:inputText id="input1" value="#{myBean.myInputValue}" 
                 required="#{myBean.myMenuValue == 'firstEntry'}" />
    
    0 讨论(0)
  • 2020-12-29 00:50

    Just bind the dropdown to the view and directly check its value in the required attribute.

    <h:selectOneMenu binding="#{menu}" value="#{bean.item}">
        <f:selectItem itemValue="first" itemLabel="First item" />
        <f:selectItem itemValue="second" itemLabel="Second item" />
    </h:selectOneMenu>
    
    <h:inputText value="#{bean.input1}" required="#{menu.value eq 'first'}" />
    <h:inputText value="#{bean.input2}" required="#{menu.value eq 'first'}" />
    

    Note that the binding example is as-is. Do absolutely not set it to a bean property here. See also How does the 'binding' attribute work in JSF? When and how should it be used?

    Also note that the ordering of the components is significant. If the menu is located below the inputs in the tree, use #{menu.submittedValue eq 'first'} instead. Or if you want to be independent from that, use #{param[menu.clientId] eq 'first'} instead.

    0 讨论(0)
提交回复
热议问题