JSF selectOneMenu选择一个项目,inputText的readOnly属性发生了变化

时间:2014-09-04 12:08:05

标签: jsf selectonemenu

我有一个selectOneMenu和一个InputText。当我选择selectOneMenu的其他选项时,我想更改InputText的readOnly="false"属性。

这些是代码

<h:form>    
    <h:selectOneMenu id="customerCombo"
                     value="#{customer.selectedBank}"
                     required="true"
                     requiredMessage="Please select one">

        <f:selectItem itemLabel="Seçiniz" noSelectionOption="true" />
        <f:selectItems value="#{customer.banks}" />         
        <f:selectItem itemValue="Other" itemLabel="Other"/> 

        <f:validateRequired/>
    </h:selectOneMenu>
    <h:message for="customerCombo"/>
    <br /><br />

    <h:outputText value="other text" />

    <h:inputText id="digerText" readonly="true"/>

    <br /><br />
    <h:commandButton value="submit" action="customerResult" />
</h:form>

1 个答案:

答案 0 :(得分:1)

  1. @ViewScoped支持bean中定义一个与readOnly状态对应的变量

    private boolean readOnly;
    //getter and setter
    
  2. 定义一个方法,用于切换readOnly变量的状态。该方法将通过ajax

    调用
    public void toggleReadOnly(){
        if(selectedBank.equals("Other"){
          readOnly = true;
        }
    } 
    
  3. 将readOnly变量的值绑定到<h:inputText/>

     <h:inputText id="digerText" readonly="#{bean.readOnly}"/>
    

    bean是(hehe)你的支持豆的名字

  4. 从下拉菜单中触发toggleReadOnly方法

    <h:selectOneMenu id="customerCombo"
                 value="#{customer.selectedBank}"
                 required="true"
                 requiredMessage="Please select one">
        <f:ajax listener="#{bean.toggleReadOnly}" render="digerText"/>
    </h:selectOneMenu>