gpt4 book ai didi

java - @PostConstruct 多次调用@ConversationScoped bean

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:31:12 27 4
gpt4 key购买 nike

我有一个@ConversationScoped bean,有一个启动方法,像这样:

@PostConstruct
public void start() {
if (conversation.isTransient()) {
conversation.begin();
log.debug("conversation.getId(): " + conversation.getId());
}
}

我的问题是每次刷新页面都会启动一个新对话,每次我对 bean 中的方法进行 AJAX 调用时也会启动一个新对话(这是我的主要问题)。

我真正想要发生的是让 sam 对话一直存在,直到我手动调用 conversation.end()。我在这里缺少什么?

最佳答案

有点偏离主题,但希望有值(value):

我不是 100% 确定@PostConstruct 是开始对话的正确位置。我宁愿使用这样的面孔事件:

<f:metadata>
<f:event type="javax.faces.event.PreRenderViewEvent"
listener="#{myBean.init}" />
</f:metadata>

如果您确定自己不在 JSF 回发请求中,则开始对话。

public void init() {
if (!FacesContext.getCurrentInstance().isPostback() && conversation.isTransient()) {
conversation.begin();
}
}

如果你使用 Seam 3,它会更容易:

<f:metadata>
<s:viewAction action="#{myBean.init}" if="#{conversation.transient}" />
</f:metadata>

关于java - @PostConstruct 多次调用@ConversationScoped bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6161618/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com