我的jsf代码如下:
<p:selectOneRadio id="options" value="#{obj.idcStatus}">
<f:selectItem itemLabel="Approve" itemValue="#{true}" />
<f:selectItem itemLabel="Disapprove" itemValue="#{false}" />
</p:selectOneRadio>
我想添加一个 selectOneRadio,它可以从 selectOneRadio (id="options"
) 中选择所有项目,如下所示:
如何做到这一点?
谢谢。
最佳答案
为这些单选按钮指定一个独特的样式类,例如styleClass="status"
。
<p:selectOneRadio id="all">
<f:selectItem itemLabel="Approve all" itemValue="#{true}" />
<f:selectItem itemLabel="Disapprove all" itemValue="#{false}" />
</p:selectOneRadio>
<p:dataTable id="table" value="#{bean.items}" var="item">
<p:column>#{item.value}</p:column>
<p:column>
<p:selectOneRadio id="status" value="#{item.status}" styleClass="status">
<f:selectItem itemLabel="Approve" itemValue="#{true}" />
<f:selectItem itemLabel="Disapprove" itemValue="#{false}" />
</p:selectOneRadio>
</p:column>
</p:dataTable>
完成此操作后,有两种通用方法可以实现功能要求:
客户端,使用 jQuery:
<p:selectOneRadio id="all" onchange="$('.status .ui-radiobutton:has([value=' + this.value + ']) .ui-radiobutton-box').click()"> ... </p:selectOneRadio>
服务器端,使用 JSF ajax:
<p:selectOneRadio id="all"> ... <p:ajax listener="#{bean.updateStatus(component.value)}" update="@(.status)" /> </p:selectOneRadio>
使用这个新的 bean 方法:
public void updateStatus(boolean newStatus) { for (Item item : items) { item.setStatus(newStatus); } }
关于javascript - 如何选择所有f :selectItems inside p:selectOneRadio with javascript in JSF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25455369/