将ui:param注入后端bean

时间:2013-12-06 23:48:00

标签: jsf-2 facelets

我正在使用jsf2处理项目列表和维护组合页面。在此组合页面中,左侧面板应显示每行的带有编辑按钮的项目行。单击编辑按钮时,右侧面板将需要显示所选项目的编辑页面。这需要使用ajax请求来完成。我正在尝试将正确的面板编辑页面放入包含文件中。因为还有另一个地方用户可以访问此编辑页面。

我的问题如下: 此编辑页面有自己的后端bean。此后端bean需要有关所选项目的一些信息才能正确启动和显示项目。每次用户单击编辑按钮时,如何将所选项目信息传递到编辑页面的后端bean?请注意,此编辑页面的显示需要作为ajax请求完成。

感谢

1 个答案:

答案 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

希望这有点帮助..

帕特里克