我正在使用jsf2处理项目列表和维护组合页面。在此组合页面中,左侧面板应显示每行的带有编辑按钮的项目行。单击编辑按钮时,右侧面板将需要显示所选项目的编辑页面。这需要使用ajax请求来完成。我正在尝试将正确的面板编辑页面放入包含文件中。因为还有另一个地方用户可以访问此编辑页面。
我的问题如下: 此编辑页面有自己的后端bean。此后端bean需要有关所选项目的一些信息才能正确启动和显示项目。每次用户单击编辑按钮时,如何将所选项目信息传递到编辑页面的后端bean?请注意,此编辑页面的显示需要作为ajax请求完成。
感谢
答案 0 :(得分:0)
Hej HockChai Lim,
你可以像这样使用dataTable:
<h:form id="myForm">
<h:dataTable id="myTable value="#{backingBeanA.items}" var="item">
<h:column>
<f:facet name="header">ItemName</f:facet>
<h:outputText value="#{item.name}">
</h:column>
<h:column>
<h:panelGrid columns="2">
<h:commandButton id="editBtn" action="#{backingBeanB.editItem(item)}" value="edit Item"/>
<h:commandButton id="deleteBtn" action="#{backingBeanA.deleteItem(item)}" value="delete"/>
</h:panelGrid>
</h:column>
</h:dataTable>
</h:form>
在backingBeanB中,你需要方法
// saves the item in item2Edit
// and returns the editPage.xhtml
// there you could get the item from
// backingBeanB with
// #{backingBeanB.item2Edit}
public String editItem(Item item) {
this.item2Edit = item;
return "editPage";
用于删除backingBeanA中的项目,也是方法
// saves the given item in item2Delete member and
// returns a deletion confirm page
public String deleteItem(Item item) {
this.item2Delete = item;
return "confirmItemDeletion";
或者您可以使用
<f:setPropertyListener target="#{backingBeanB.item}" value="item"/>
在您的dataTable
中希望这有点帮助..
帕特里克