Невозможно просмотреть детали объекта, если визуализируется с помощью метода @Factory - PullRequest
1 голос
/ 15 октября 2010

В моем классе запросов сущностей есть следующий код, который я использую для отображения объектов List.Объекты отображаются правильно, когда я использую имя метода @Factory («пользователи») для перебора всех элементов в rich: dataTable.Но когда я щелкаю по конкретному пользователю, чтобы перейти на страницу сведений, в качестве параметра страницы (e.g. &dataModelSelection=_user:users[0]) добавляется следующее, что приводит к тому, что на странице не отображается подробная информация, но если я удаляю этот параметр запроса, кажется, что он работает нормально.Что может быть не так?

@Name("userList")
public class UserList extends EntityQuery<User> {

    @DataModel(scope = ScopeType.PAGE)
    private List<User> users;

    @Factory("users")
    public List<User> getUsersByOrg() {

}

Примечание. Если я закомментирую строку, содержащую аннотацию @DataModel, указанный выше параметр не будет определен, и я смогу просмотреть сведения о пользователе.

1 Ответ

1 голос
/ 15 октября 2010

@ Аннотация DataModel позволяет Seam обернуть некоторые коллекции java.util. *, Такие как List, Set и т. Д. Для компонентов UIData JSF (например, rich: dataTable) требуется специальная оболочка коллекции, базовый класс которой javax.faces.DataModel . Поддерживает выбор строки, сделанный пользователем Объясняет, почему вы видите

dataModelSelection=_user:users[0]

Так что, если вы хотите захватить выбранного пользователя, вы должны использовать @ DataModelSelection

@DataModelSelection
@Out(required=false)
private User selectedUser;

Вы можете использовать h: commandLink, чтобы бросить поддерживаемое действие

<rich:datTable value="#{users}" var="_user">
    <h:column>
        <f:facet name="header">Action</f:facet>
        <h:commandLink action="#{userHome.view}" value="View"/>
    </h:column>
</richTable>
...