如果选择框值为DOB,则禁用

时间:2013-12-04 22:40:44

标签: jsf jsf-2 primefaces

嗨,大家好我试图禁用selectOneRadio选择,如果用户从下拉菜单中选择了DOB但它仍然呈现selectionOneRadio按钮

这是代码

   Please select the criteria you wish to search :

      <p:selectOneMenu value="#{bean.criteria}" effect="fade"
                                 filterMatchMode="startsWith"
                                 style="width:230px" 
                                 >
        <f:selectItem itemLabel="#{bundle.labelUsername}" itemValue="username" />
        <f:selectItem itemLabel="#{bundle.labelFirstName}" itemValue="firstName" />  
        <f:selectItem itemLabel="#{bundle.labelSurname}" itemValue="surname" />  
        <f:selectItem itemLabel="#{bundle.labelGender}" itemValue="gender" />  
        <f:selectItem itemLabel="#{bundle.labelDOB}" itemValue="DateOfBirth" />  
        <f:selectItem itemLabel="#{bundle.labelPhone}" itemValue="telephoneNumber" />  
        <f:selectItem itemLabel="#{bundle.labelEmail}" itemValue="emailAddress" />  
        <p:ajax update="searchMatch" event="valueChange"/>
      </p:selectOneMenu>




   Please select if you would like an exact or partial match

      <p:selectOneRadio id="searchMatch" value="#{bean.match}" style="width:230px" 
                                  required = "True"
                                  requiredMessage = "#{bundle.requiredMatch}"
                                  rendered="#{bean.criteria !='DateOfBirth'}">
         <f:selectItem itemLabel="Exact" itemValue="=" />  
         <f:selectItem itemLabel="Partial" itemValue="LIKE " />
      </p:selectOneRadio>

我怎样才能得到它,以便在选择DateOfBirth时禁用一个单选按钮

2 个答案:

答案 0 :(得分:2)

您无法ajax更新自身有条件渲染的组件。负责基于JSF ajax响应更改HTML DOM树的JavaScript只能替换 HTML DOM元素,而不是完整地添加/删除它们。

相反,您需要ajax更新始终呈现的父组件。

<p:selectOneMenu ...>
    ... 
    <p:ajax update="searchMatchGroup" />
</p:selectOneMenu>

<h:panelGroup id="selectMatchGroup>
    <p:selectOneRadio ... rendered="#{bean.criteria !='DateOfBirth'}">
        ...
    </p:selectOneRadio>
</h:panelGroup>

另见:

答案 1 :(得分:-1)

您必须在<p:selectOneMenu>的更改事件中添加侦听器。该方法更新支持托管bean的布尔属性。该属性启用和禁用<p:selectOneRadio>

例如,将<p:ajax>更改为

<p:ajax update="searchMatch" listener="bean.updateRadio"/>

updateRadio方法将是:

public void updateRadio(AjaxBehaviorEvent event){
   if(criteria ==  DOB)// check here if selected item is DOB ??
     {match=true}
   else match=false;
}

match初始化为值false。我认为这可以解决你的问题。