Jsf2 просмотреть параметры и видоисканные компоненты - PullRequest
1 голос
/ 19 июня 2011

Как я могу получить доступ к параметрам представления из bean-объекта видимости?У меня есть страница почти с тем же содержанием, как это:

<f:metadata>
    <f:viewParam name="name" value="#{goToUserpageRequest.name}" />
</f:metadata>

<ui:define name="content">
    <h:outputText value="#{user.name}" styleClass="text"></h:outputText>
    <h:outputText value="#{user.description}" styleClass="text"></h:outputText>
</ui:define>

GoToUserpageRequest - это компонент, который я использую для перенаправления на эту страницу, поэтому я могу отправить значение для имени.Пользователь - мой видоисканный боб.Я хочу передать значение nameParam name в user.name.Как я могу это сделать?Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 11 декабря 2012

Для вашего случая есть более простой способ, который я только что нашел, когда искал решение для той же ситуации. просто используйте это в вашем xhtml вместе:

<f:metadata>
    <f:viewParam name="name" value="#{goToUserpageRequest.name}" />
</f:metadata>

 <f:event type="preRenderView" listener="#{MY_BEAN.setName(goToUserpageRequest.name)}"/>

чтобы вы могли отправить значение goToUserpageRequest.name обратно в бин вашего перенаправленного представления (я назвал MY_BEAN)

1 голос
/ 19 июня 2011

Вы можете получить эту информацию, используя внешний контекст из вашего контекста .См. параметры запроса .

Однако я бы попытался использовать объект запроса scope и внедрить значения представления и области видимости в это,После этого вы можете манипулировать объектом видовой области.Этот подход проще для модульного тестирования.


РЕДАКТИРОВАТЬ:

Вот пример реализации:

@ManagedBean @RequestScoped
public class NameUpdater {
    @ManagedProperty("#{param.name}") private String name;
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    @ManagedProperty("#{user}") private User user;
    public User getUser() { return user; }
    public void setUser(User user) { this.user = user; }

    @PostConstruct public void init() {
        if(name != null) user.setName(name);
    }
}

Для создания bean-объекта области действия запросавыражение привязки изменится на что-то вроде:

<h:outputText value="#{nameUpdater.user.name}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...