【发布时间】:2013-12-19 04:39:17
【问题描述】:
我正在使用可编辑的 Primefaces p:datatable 向用户显示数据。在这个数据表中,我有一个p:column 和一个h:selectOneMenu,另一个是p:selectBooleanCheckbox。
我想根据h:selectOneMenu 中选择的值选中或取消选中并禁用或启用复选框。
如果我只有一个h:selectOneMenu 和一个p:selectBooleanCheckbox,我会使用p:ajax 将一个侦听器附加到更改事件,并在此方法中操作p:selectBooleanCheckbox。但我每行有一对h:selectOneMenu 和p:selectBooleanCheckbox,我不知道该怎么做。
这是我尝试过的:
<h:form>
<p:dataTable var="appointment" value="#{prescController.appointmentsToday}" editable="true" id="tblAppointments">
<p:ajax event="rowEdit"
listener="#{prescController.onEdit}" update=":messages" />
<p:column sortBy="presc.drug" headerText="Drug">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{appointment.presc.drug.name}" />
</f:facet>
<f:facet name="input">
<h:selectOneMenu value="#{appointment.presc.drug}"
converter="#{drugConverter}" required="true">
<f:selectItem itemLabel="" noSelectionOption="true" />
<f:selectItems value="#{prescController.drugs}"
var="drug" itemLabel="#{drug.name}" />
<p:ajax update="autoAmount" />
</h:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
<p:column sortBy="presc.autoAmount" headerText="Auto amount">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="Y"
rendered="#{not empty appointment.presc.drug.rules and appointment.presc.autoAmount}" />
<h:outputText value="N"
rendered="#{empty appointment.presc.drug.rules or not appointment.presc.autoAmount}" />
</f:facet>
<f:facet name="input">
<p:selectBooleanCheckbox id="autoAmount"
value="#{not empty appointment.presc.drug.rules and appointment.presc.autoAmount}"
disabled="#{appointment.presc.drug.name eq 'somethingsomething'}" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column>
<p:rowEditor />
</p:column>
</p:dataTable>
</h:form>
【问题讨论】:
-
嗨 Herreria,您只想执行这个 selectOneMenu 并且只渲染一个连接的表格行的字段 - 而不将整个表格发送回服务器并重新渲染?
-
是的,L-Ray,这就是我想要的。有可能吗?
-
您到底面临什么问题?您究竟是如何未能指定
<p:ajax update="checkboxId">“通常的方式”,就好像您不在数据表中一样? -
我尝试将
<p:ajax update="checkboxId" />与<p:selectBooleanCheckbox id="checkboxId" disabled="#{entity.subentity.name eq 'somethingsomething'}" />结合使用(其中entity是p:dataTable的属性var 的值,subentity是我在h:selectOneMenu中选择的值)但是 AJAX 响应总是一样的;当我选择名称为“somethingsomething”的“子实体”时,它不会添加 disabled 属性 -
显示一些代码会有所帮助
标签: jsf jsf-2 primefaces