【发布时间】:2014-01-20 23:49:48
【问题描述】:
我有一个带有 rowedit 的数据表。 我的表的一列是一个带有列表框的单元格,列表框的项目是动态检索的(取决于另一个单元格中的值) 我使用 rowEditInit 来设置 selectedrow 项目。我想更新列表框以检索正确的值。 这不起作用。 当我这样做时
<p:ajax event="rowEditInit" listener="#{workOrderDetail.onEdit}" update="orderitemstable" />
然后,当我单击铅笔图标时,我可以看到行切换到编辑模式并检索列表框项目。但它直接切换回非编辑模式。
但是当我这样做时
<p:ajax event="rowEditInit" listener="#{workOrderDetail.onEdit}" update="rmactionenumid" />
然后单击铅笔图标将该行置于编辑模式,但不会调用检索列表框项目。我的猜测是,它不会触发 rmactionenumid 上的更新。
有什么想法吗?
罗尔
这是我的 jsf 代码
<p:ajax event="rowEditInit" listener="#{workOrderDetail.onEdit}" update="rmactionenumid" />
<p:column >
<p:cellEditor>
<f:facet name="output">
<h:outputText id="rmactionenumidlabel" value="#{orderItem.rmActionRepr}" >
</h:outputText>
</f:facet>
<f:facet name="input">
<h:selectOneListbox id="rmactionenumid" value="#{orderItem.rmActionEnumId}" size="1" valueChangeListener="#{workOrderDetail.setActionRepr}">
<f:selectItems value="#{workOrderDetail.actionItems}"/>
<p:ajax event="change" update="partdiscount,labourdiscount,totalprice,:detail:wodetail:totals" execute="@this" />
</h:selectOneListbox>
</f:facet>
</p:cellEditor>
</p:column>
<p:column >
<p:rowEditor id="edit" />
</p:commandLink>
</p:column>
</p:dataTable>
这是我的 java bean 代码
public List<SelectItem> getActionItems() throws MWSException {
ArrayList<SelectItem> actions = new ArrayList<SelectItem>();
if (getSelectedOrderItem() != null) {
ListManager lm = new ListManager(getWA().getMwsProxy());
MWSGenericMapList items = lm.nativeSearch(getWS().getUser(), HdfWebConstants.NS_VEHICLEPARTACTIONS, 0, 0, 200,
false, getSelectedOrderItem().getVehiclePartCode());
for (int i = 0; i < items.size(); i++) {
actions.add(new SelectItem(items.get(i).get("rmaction_enumid").toString(), items.get(i).get("rmaction")
.toString()));
}
}
return actions;
}
public void setSelectedOrderItem(IMWSOrderItem newSelectedOrderItem) throws MWSException {
this.selectedOrderItem = newSelectedOrderItem;
}
public void onEdit(RowEditEvent event) throws MWSException {
setSelectedOrderItem((IMWSOrderItem) event.getObject());
}
我正在使用 PF3.5
【问题讨论】:
-
你为什么在
selectOneListbox同时使用valueChangeListener和p:ajax?您有很多代码可以发布您的功能,例如,您在开始编辑和完成编辑时调用onEdit。真的有用吗?此外,您发布了两个内容相似的专栏,我建议您尝试自己隔离具体问题。如果您仍然遇到问题,请以更可取的SSCCE 样式在此处发布,该样式可以复制粘贴并运行。否则,看具体问题太复杂了。 -
我删除了一些代码(认为它可能有用,但显然没有)
-
如果我使用 ajax 添加一个命令链接,只需 update="rmactionenumid" 并在编辑后单击它,然后正确显示 de 列表框(无需再次调用 bean 方法)
标签: jsf primefaces datatable listbox