我在使用 JSF 和 PrimeFaces 时遇到了一点问题。我有一个带有两个<p:selectonemenu>
s 和两个<h:outputText>
s 的表格。第一个的内容<p:selectonemenu>
更新第二个,两个<h:outputText>
s 用第二个更新<p:selectonemenu>
。两个<p:selectonemenu>
s 都依赖于我的支持 bean 上的值。<h:outputText>
问题是当 FIRST<p:selectonemenu>
更改它的值时,我无法清除s 。
我尝试使用<f:ajax>
监听器来清除当前显示的实体的内容。
这是xhtml:
<h:outputText value="#{bundle.BailmentFamiliesLabel_bailmentFamCode}"/>
<p:selectOneMenu id="bailmentFamilyCode" value="#{bailmentsController.selected.bailmentFamId}" required="false">
<f:selectItems value="#{bailmentFamiliesController.itemsAvailableSelectOne}" var="famid"/>
<f:ajax event="change" render="description price bailmentCode" listener="${bailmentsController.clearView(famid)}"/>
</p:selectOneMenu>
<h:outputText value="#{bundle.BailmentsLabel_bailmentCode}"/>
<p:selectOneMenu id="bailmentCode" value="#{bailmentsController.selected}" required="false">
<f:selectItems value="#{bailmentsController.itemsAvailableSelectOneByFamId}"/>
<f:ajax event="change" render="globalForm" listener="#{bailmentsController.view(bailmentsController.selected.bailmentCode,bailmentsController.selected.bailmentFamId)}" />
</p:selectOneMenu>
<h:outputText value="#{bundle.Label_description}"/>
<h:outputText value="#{bailmentsController.selected.description}" title="#{bundle.Title_description}" id="description"/>
<h:outputText value="#{bundle.BailmentsLabel_purchasePriceMsj}"/>
<h:outputText value="#{bailmentsController.selected.purchasePrice}" title="#{bundle.BailmentsTitle_purchasePrice}" id="price"/>
bailmentsController上的第一个监听器<p:selectonemenu>
:
public void clearView(BailmentFamilies bf) {
if (bf != null) {
current = new Bailments();
current.setBailmentFamId(bf);
}
}
在我的数据库中,每个 Bailment 都分配有一个 BailmentFamily,这就是我使用两步过滤器的原因。第一个<p:selectonemenu>
列出所有可用的 BailmentFamily,第二个<p:selectonemenu>
显示选定 BailmentFamily 的所有可用 Bailments。s 显示所选 Bailment的<h:outputText>
信息,这就是为什么我需要在 BailmentFamily 更改时清除它们。
任何人都可以提出另一种行动方案吗?因为这并没有被证明是有效的。非常感谢。