当我在dataTable中使用时,我对p:selectonemenu有一个要求。
<p:selectOneMenu value="#{buyerInProcessBean.subject}"
id="buyerResponseId" >
<f:selectItems
value="#{buyerInProcessBean.subjectMap[trans.decisionrule.ruleId]}"
var="subject" itemLabel="#{subject}" itemValue="#{subject}"></f:selectItems>
<f:selectItem itemLabel="Other" itemValue="Other"></f:selectItem>
</p:selectOneMenu>
如果我选择'其他',对话必须强制获得弹出窗口。否则不是强制性的。
我如何达到这种要求?
答案 0 :(得分:0)
您应该将函数绑定到onchange
的{{1}}事件,找出所需选项的值是否与打开对话框的值匹配,并触发<p:selectOneMenu>
in那种情况。
注意,Primefaces'组件将dialog.open()
标记包含在某些div中,并在中间组件中输出所选的<select>
,因此将事件附加到隐藏的<option>
元素不会工作。另一方面,例如,JSF <select>
标记呈现<h:selectOneMenu>
元素,因此对<select>
的绑定行为将触发所需的行为。
观点:
onchange
JavaScript:
<h:form id="form">
<p:selectOneMenu value="#{buyerInProcessBean.subject}" id="buyerResponseId" onchange="changeEvent(this)">
<f:selectItems value="#{buyerInProcessBean.subjectMap[trans.decisionrule.ruleId]}"
var="subject" itemLabel="#{subject}" itemValue="#{subject}" />
<f:selectItem itemLabel="Other" itemValue="Other" />
</p:selectOneMenu>
</h:form>
<p:dialog widgetVar="dialog">
<h:outputText value="Additional Data" />
</p:dialog>