如何使Primefaces selectonemenu处于禁用状态?

时间:2012-09-04 05:02:32

标签: jsf primefaces

我需要使用p:selectonemenu并禁用它,即它应该在帖子中提交但它应该是只读的。请注意,我不想使用disabled属性,因为这会阻止发布。

我在这个论坛上已经读到这可以通过使用隐藏字段来实现,但是我不明白如何实现它。如果有人能在这方面为我提供一些帮助,我将不胜感激。

<p:inputText id="cpr" value="#{customerbean.customer.cpr}">
    <p:ajax event="change" listener="#{customerbean.fetchCustomerDatafromCBS}" update="nationality address passportno name nationality dob address mailingaddress gender mobileno landlineno otherno email maritalstatus nochildren" immediate="true" >
         <f:param name="cprNumber" value="#{customerbean.customer.cpr}"/>
    </p:ajax>                 
    <f:validator validatorId="cprValidator" />                    
</p:inputText>   


<p:selectOneMenu id="gender" value="#{customerbean.customer.gender}" required="!#{customerbean.disabled}" requiredMessage="#{text['validation.error.required.gender']}" disabled="#{customerbean.disabled}">                      
    <f:selectItem itemLabel="Select One" itemValue="" noSelectionOption="true" />  
    <f:selectItem itemLabel="Male" itemValue="Male" />  
    <f:selectItem itemLabel="Female" itemValue="Female"  />  
</p:selectOneMenu>                

<p:inputText  type="hidden" value="#{customerbean.customer.gender}" />

1 个答案:

答案 0 :(得分:5)

  

我在这个论坛上看过,这可以通过使用隐藏来实现   字段,但我不明白这是如何实现的。

禁用<p:selectOneMenu>,然后创建<p:inputText type="hidden" value="#{bean.property}" />value属性必须与<p:selectOneMenu>相同。如有必要,请使用相同的转换器。

这样,<p:selectOneMenu>将被禁用给用户,但该值将由隐藏的<p:inputText />提交。


请记住隐藏的输入仍然是<p:inputText />,因此需要在其值更改时进行更新。为其分配ID,并确保将其添加到update的{​​{1}}。