0

这是一个我无法实现的简单用例:我想创建一个链接或按钮,它调用服务器方法(操作)并将重定向到页面而不保留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()没有调用该方法...

有人有想法吗?

4

1 回答 1

0

使用h:commandLink和调用conversation.end()fromidentity.logout()应该可以工作。您没有包含 的代码identity.logout(),但我怀疑您没有结束对话。通过结束对话,您将其从长时间运行更改为瞬态,此时不应传播。

于 2012-01-11T19:59:37.657 回答