私は次の構造を持っています:
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);
}
}