嗨,大家好我试图禁用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时禁用一个单选按钮
答案 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
。我认为这可以解决你的问题。