Java 如何将实体从一个jsf视图传输到另一个jsf视图?

Java 如何将实体从一个jsf视图传输到另一个jsf视图?,java,jsf,views,managed-bean,scopes,Java,Jsf,Views,Managed Bean,Scopes,我的结构如下: listView.xhtml <h:dataTable value="#{listBean.myList} ...> //for every row I create a commandLink <h:commandLink action="editView" value="edit" /> </h:dataTable> <h:inputText value="#{editBean.selectedEntity.name}" /

我的结构如下:

listView.xhtml

<h:dataTable value="#{listBean.myList} ...>
  //for every row I create a commandLink
  <h:commandLink action="editView" value="edit" />
</h:dataTable>
<h:inputText value="#{editBean.selectedEntity.name}" />
<h:dataTable value="#{listBean.myList} ...>
  //for every row I create a commandLink, so you can click on that entity to edit it
  <h:commandLink action="editView" value="edit">
     <f:param name="selectedEntityId" value="#{entity.id}" />
  </h:commandLink>
</h:dataTable>
您知道这个问题:如何将所选实体从listView传输到editView?这应该很简单,我想,但一整天之后,我没有得到它的工作

我尝试了不同的东西,比如
@ManagedProperty
,但我没有帮助我。 所以,请告诉我这是多么简单和美好:)

提前谢谢


更新-解决方案#1

多亏了丹尼尔, 一种可行的方法是,当实体由EntityManager持有时,您可以通过其id访问该实体。因此,您可以将该id作为请求参数传递。我们开始:

listView.xhtml

<h:dataTable value="#{listBean.myList} ...>
  //for every row I create a commandLink
  <h:commandLink action="editView" value="edit" />
</h:dataTable>
<h:inputText value="#{editBean.selectedEntity.name}" />
<h:dataTable value="#{listBean.myList} ...>
  //for every row I create a commandLink, so you can click on that entity to edit it
  <h:commandLink action="editView" value="edit">
     <f:param name="selectedEntityId" value="#{entity.id}" />
  </h:commandLink>
</h:dataTable>

总体思路可以是:

要传递该实体的
id
,然后通过该id获取实体

您还可以使用转换器,并在其中将id转换为实体

像这样:

<h:inputText value="#{editBean.selectedEntity.name}" converter="myEntityConverter"/>

如果bean具有相同的作用域,您是否应该合并它们? 您也可以使用上下文:

再看看这个问题:
ups,我纠正了帖子中的错误。但问题是RequestParameterMap.get(“paramName”)只返回字符串,而不返回实体对象。然后传递
id
并通过该
id
获取实体,或者使用
转换器
并在其内部将
id
转换为实体……这样做很有效!谢谢我将更新我的问题以提供解决方案。不过,我认为有一个更简单的解决办法;)我认为如果从listView导航到editView,视图已经改变,因此@ViewScoped bean被清除(这是正确的吗?)。难道没有一种通过RequestScope发送bean的方法吗?因为这只是一个请求…还是不是?