Jsf 2 将ui:param注入后端bean

Jsf 2 将ui:param注入后端bean,jsf-2,facelets,Jsf 2,Facelets,我正在使用jsf2开发一个项目列表和维护组合页面。在这个组合页面中,左边的面板应该显示项目的行,每行上都有编辑按钮。单击编辑按钮时,右侧面板将需要显示所选项目的编辑页面。这需要通过ajax请求来完成。我正在尝试将右侧面板的“编辑”页面放入一个包含文件中。因为用户可以在另一个地方访问此编辑页面 我的问题如下: 此编辑页面有自己的后端bean。这个后端bean需要一些关于所选项目的信息,以便正确初始化和显示项目。如何在用户每次单击编辑按钮时将所选项目信息传递给编辑页面的后端bean?请注意,此编辑页

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

我的问题如下: 此编辑页面有自己的后端bean。这个后端bean需要一些关于所选项目的信息,以便正确初始化和显示项目。如何在用户每次单击编辑按钮时将所选项目信息传递给编辑页面的后端bean?请注意,此编辑页面的显示需要作为ajax请求完成

谢谢你

您可以使用如下数据表:

<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>
要删除backingBeanA中的项,还需要使用

// 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";
// 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"/> 
在数据表中

希望这有点帮助


Patrick

Hi HockChai Lim,你在这里要求的是基本的JSF-2知识-任何教程都是最好的起点。JSF-2中的列表是通过h:dataTable完成的,通过h:commandButton进行选择,通过f:ajax使用合适的渲染属性进行ajax重新渲染。一旦你有了一个可能的例子并遇到问题。。。stackoverflow是问题的关键。谢谢你,帕特里克。这就是我要找的。我最终不得不在commandlink上使用actionListener,而不是action,这样它才能工作。我发现在使用操作时,setpropertylistener将在操作之前执行。但是如果我使用actionListner,setpropertylistener将在actionListner之后执行。