я иметь следующую структуру:Как переносить объект из одного jsf-представления в другой?
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="">
, но я не помочь мне. Итак, пожалуйста, покажите мне, насколько простым и приятным это может быть :)
Заранее спасибо!
UPDATE - Решение # 1
Благодаря Даниилу, возможный путь, который работает является, когда объект удерживается с помощью EntityManager, так что вы можете получить доступ к сущности его идентификатору , Таким образом, вы передадите идентификатор в качестве параметра запроса. Здесь мы идем:
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);
}
}
'<е: param' не получил' key' атрибут, его называют 'name' – Daniel
окна, я исправил ошибку в почте. Но проблема в том, что RequestParameterMap.get ("paramName") возвращает строки, а не объект Entity. – artgrohe
, чем передать 'id' и получить * сущность * с помощью этого' id' или использовать 'конвертер', а внутри он переводит' id' в объект ... – Daniel