gpt4 book ai didi

java - 如何将实体从一个 jsf View 传输到另一个 jsf View ?

转载 作者:行者123 更新时间:2023-12-01 05:00:21 26 4
gpt4 key购买 nike

我有以下结构:

listView.xhtml

<h:dataTable value="#{listBean.myList} ...>
//for every row I create a commandLink
<h:commandLink action="editView" value="edit" />
</h:dataTable>

ListBean.java

@ManagedBean
@ViewScoped
public class ListBean{
public List<Entity> myList; // also getters and setters
}

editView.xhtml

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

EditBean.java

@ManagedBean
@ViewScoped
public class EditBean{
public Entity selectedEntity; // also getters and setters
}

您知道这个问题:如何将选定的实体从 listView 传输到 editView?我想这应该很简单,但是搞了一整天,我还是没有成功。

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

提前致谢!

<小时/>

更新 - 解决方案#1

感谢丹尼尔,一种可能的工作方式是,当实体由 EntityManager 持有时,这样您就可以通过实体的 id 访问该实体。因此,您将把 id 作为请求参数传递。我们开始吧:

listView.xhtml

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

EditBean.java

@ManagedBean
@ViewScoped
public class EditBean{

private Entity selectedEntity;

@PostConstruct
public void init() {
Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
long selectedEntityId = Long.parseLong(params.get("selectedEntityId"));

selectedEntity = SomeEntityManagerUtil.getEntity(selectedEntityId);
}
}

最佳答案

总体思路可能是:

传递该实体的 id 并稍后通过该 id 获取实体...

您还可以使用转换器并在其中将该 ID 翻译为实体...

像这样:

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

关于java - 如何将实体从一个 jsf View 传输到另一个 jsf View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13472102/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com