Как создать ссылку или кнопку, которая вызывает действие и не сохраняет cid? - PullRequest
0 голосов
/ 10 января 2012

Вот простой пример использования, который мне не удается реализовать: я хочу создать ссылку или кнопку, которая вызывает метод (действие) сервера и будет перенаправлять на страницу без сохранения параметра cid.

Я использую JSF2, JBoss 7 и Seam 3.

Вот два метода, которые я безуспешно попробовал.

Первый, h:commandLink

<h:commandLink action="pages/home.xhtml"
               actionListener="#{identity.logout()}"
               value="#{bundles.layout.logout}" />

Здесь вызывается identity.logout(), но затем браузер перенаправляется на pages/home.xhtml?cid=1, поэтому, если я снова войду в систему, у меня будет ошибка

org.jboss.weld.context.ContextNotActiveException: WELD-001303 No active contexts for scope type javax.enterprise.context.ConversationScoped

.

Второй, h:link

<h:link outcome="/pages/home.xhtml" value="#{bundles.layout.logout}">
    <f:ajax event="click" listener="#{identity.logout()}" />
</h:link>

Здесь у меня нет cid в сгенерированной гиперссылке, но метод identity.logout()не называется ...

У кого-нибудь есть идея?

1 Ответ

0 голосов
/ 11 января 2012

Использование h:commandLink и вызов conversation.end() из identity.logout() должны работать. Вы не включили код для identity.logout(), но я подозреваю, что вы не заканчиваете разговор. Завершая разговор, вы меняете его с продолжительного на переходный, и в этот момент он не должен распространяться.

...