Установка свойства в базовом компоненте при переходе от одной страницы к другой (View Scope) не работает - PullRequest
1 голос
/ 26 октября 2011

У меня есть базовый компонент Authority в области просмотра, и у меня есть две страницы viewRoles и editRole, сопоставленные с этим базовым компонентом.

На странице viewRoles есть ссылка для перехода на страницу editRole:

<h:form>
  <h:commandLink value="#{au.displayName}" action="pretty:editRole">
    <f:setPropertyActionListener target="#{authority.authorityId}" value="#{au.id}"/>                   
  </h:commandLink>
</h:form>

Он переходит на другую страницу, но свойство не устанавливается, даже если компонент находится в области видимости, и обе страницы отображаются на один и тот же компонент поддержки. Это работает, только когда я изменяю область просмотра на область сеанса.

Примечание: Spring управляет моими bean-компонентами, также эта область просмотра не является JSF по умолчанию @ViewScoped, это пользовательская область, которую я нашел в http://cagataycivici.wordpress.com/2010/02/17/port-jsf-2-0s-viewscope-to-spring-3-0/. Также я использую PrettyFaces для управления моей навигацией.

Вопрос в том, должен ли описанный выше сценарий работать с реальным JSF2 @ViewScoped @ManagedBean или проблема связана со Spring или другой проблемой? пожалуйста, сообщите.

1 Ответ

5 голосов
/ 26 октября 2011

Нет, это также не будет работать с компонентом JSF2 @ViewScoped.Вы в основном переходите к другому представлению.Бин @ViewScoped живет до тех пор, пока вы взаимодействуете с тем же представлением , возвращая null или void в методах действия.Для этого следует использовать <f:param> в командной строке в сочетании с <f:viewParam> в целевом представлении.

Например, в командной строке:

<h:form>
  <h:commandLink value="#{au.displayName}" action="pretty:editRole">
    <f:param name="authorityId" value="#{au.id}"/>                   
  </h:commandLink>
</h:form>

и в целевом представлении:

<f:metadata>
    <f:viewParam name="authorityId" value="#{authority.authorityId}"
        required="true" requiredMessage="Invalid page access. Please use a link from within the system."
    />
</f:metadata>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...