【发布时间】:2016-11-07 07:31:50
【问题描述】:
我有一个 p:selectOneRadio 设置如下:
<p:selectOneRadio id="positionRadio" value="#{employeeBean.empPosition}" converter="#{empPositionConverter}" layout="custom"
required="true" requiredMessage="Please select a position">
<f:selectItems value="#{employeeBean.positionList}" var="pos"
itemLabel="#{pos.name}" itemValue="#{pos}" />
<p:ajax process="@this" update="@this"/>
</p:selectOneRadio>
<ui:repeat id="iterator" value="#{employeeBean.positionList}" var="template" varStatus="iterStat">
<div class="form-group" onclick="document.getElementById('employeeForm:positionRadio:#{iterStat.index}').click();">
<h:outputText styleClass="form-control" value="#{pos.name}"/>
<p:radioButton for=":employeeForm:positionRadio" itemIndex="#{iterStat.index}" />
<div style="display: inline">
<p style="display: inline">
<h:outputText value="#{pos.description}"/>
</p>
</div>
</div>
</ui:repeat>
如果单击了包含它的 div 中的任何内容,我需要检查相应的单选按钮。我正在尝试使用
onclick="document.getElementById('employeeForm:positionRadio:#{iterStat.index}').click();"
这只是工作了一半。当我单击 div 时,我确实看到了 POST 请求触发,但是样式没有更新,所以我的单选按钮都没有被检查客户端。
这当然是因为 p:radioButton 被呈现为具有隐藏输入单选元素和相应样式的可见跨度的 div。为什么通过javascript点击时span样式没有更新,有办法解决吗?
使用 JSF 2.1.7、PrimeFaces 5.0 和 Java 1.7
【问题讨论】:
标签: javascript css jsf primefaces