在selectonemenu中选择值后立即显示对话框

时间:2013-03-16 10:54:48

标签: primefaces

当我在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>

如果我选择'其他',对话必须强制获得弹出窗口。否则不是强制性的。

我如何达到这种要求?

1 个答案:

答案 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>