问题标签 [conversation-scope]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
332 浏览

java-ee-6 - JavaEE6 Conversation.end 不会将 conversation.id 重置为 1

调用conversation.end时是否没有重置conversation.id?

场景:我有一个在 CRUD 中使用对话范围的应用程序,所以当我访问列表页面时,它会开始对话。转到详细信息并单击返回将调用结束对话并再次开始对话。但是当我处于调试模式时,我发现当调用 conversation.end() 时,会话设置为空。然后当我重新调用 conversation.begin() 时,conversation.id 不会重置为 1,而是最后一个值 + 1。这样做是否正确?

更令人费解的是,注销并再次登录后,conversation.id 取最后一个值+1。

我的环境:使用 javaee-api 的 Jboss 7.1.3。

所以基本上我有一个由所有支持bean扩展的基本实体(上面定义了上面的代码。)。呈现列表页面时,它将调用 beginConversation。在详细页面点击返回按钮将调用 endConversation。

0 投票
1 回答
1175 浏览

ajax - 如何将 @ConversationScoped 与 Ajax 请求一起使用?

我正在使用 JSF2 和 PrimeFaces,每次我发出 Ajax 请求并检查电流conversation是否是瞬态的,它不是并且开始新的对话。

当我禁用 Ajax 请求时,表单会自动传递cid并恢复对话,但当是 Ajax 请求时,cid不会自动传递。

cid使用 Ajax 请求时如何正确传递@ConversationScoped?为什么这个参数没有自动传递?

0 投票
1 回答
4936 浏览

jsf-2 - WELD-000321 当我刷新页面时,找不到要恢复 id 3 的对话

刷新对话期间显示的页面时出现错误。如何避免这个错误?

情况:

我有 2 个 JSF 页面,index.xhtml 和 age.xhtml。

index.xhtml 包含用户输入生日的表单(支持 bean“bean”的属性)。当用户提交表单时,age.xhtml 根据生日显示年龄。

表单通过重定向提交:

计算年龄方法:

两个页面都使用相同的支持 bean“bean”。这个支持 bean 有一个对话范围。

页面年龄.xhtml:

getAge 方法:

一切都很好,除非我刷新age.xhtml。然后我收到此错误消息:WELD-000321 No conversation found to restore for id 3

刷新前后浏览器显示的URL: http://localhost:8080/tpjsf1/faces/age.xhtml?cid=3

问题来自最后的 cid=3 。用户刷新age.xhtml时是否可以避免错误页面?

0 投票
1 回答
115 浏览

jakarta-ee - GlassFish 3、Java EE 上的声明式对话管理

我在我的一个应用程序中依赖@ConversationScoped EntityManagers。

但是,我现在需要从对话(Timer EJB)之外访问所说的 EntityManagers。我读了一篇关于如何编写一个拦截器的教程,如果不存在,它会打开一个新的对话 - 42 行教程

现在,当我尝试设置示例时,我得到了异常,即@Bound @Inject BoundConversationContext 没有目标。

老实说,我不知道问题可能是什么,也不知道我往哪个方向看。

我目前正在使用:
GlassFish 3
Java EE 6

0 投票
1 回答
636 浏览

jsf - 带有 CDI 对话范围 bean 的 JSF 在弹出窗口中继续覆盖

我正在使用带有 jsf 的 cdi 对话范围 bean,在我的 jsf 页面中我打开了一个弹出窗口,并且我想使用与父窗口相同的对话 ID。

我怎样才能做到这一点?当我打开弹出窗口并输入 bean 时,它是一个新的 bean,所以对话不存在。我希望新窗口使用相同的对话。可以创建这个吗?如何将此对话传递到新页面?

提前致谢。

0 投票
1 回答
176 浏览

tapestry - Tapestry 4.1 会话范围。可能的?

是否有可能在 Tapestry 4.1 和 Hivemind 中使用对话范围?

现在,如果用户在两个不同的选项卡中打开相同的页面,那么他们使用由 Hivemind 注入的相同模型。因此,如果他在第一页提交了一些数据,那么实际上他会更改在第二个选项卡中打开(加载)的数据。

Tapestry 组件似乎也在会话范围内。因为您不能在不同选项卡的同一页面上使用某些组件。如果你提交的东西你会得到这样的错误

org.apache.tapestry.BindingException: Unable to update OGNL expression '' of #some_page: target is null for setProperty(null,.......

解决方案?

0 投票
2 回答
3054 浏览

jsf - 如何为 NonexistentConversationException 配置错误页面位置?

?cid=XX我需要帮助处理URL 中的过期/不存在的对话。我试图把

然而这些都不起作用。我仍然收到错误消息,无法转发index.xhtml。我怎么解决这个问题?

0 投票
1 回答
1070 浏览

jsf - 对话范围不适用于重定向

我正在使用 JSF 和 PrettyFaces,我需要做下一件事。我在 ui:repeat 中生成了 4 个按钮。每个 commandButton 在对话 Bean 中设置一个对象,然后我必须导航到另一个页面并获取在单击的按钮中设置的对象。看起来很简单,但问题是我需要在浏览器中使用 PrettyFaces 友好的 URL。

完成的测试:

  • 如果我将 xhtml 资源作为字符串放在 return commandbutton 操作中,则正确导航但 URL 指向 xhtml 资源,而不是漂亮的友好 URL。(例如:...host/my-web/prices.xhtml)

  • 如果我将友好 URL 作为字符串 (/web/prices/) 放在返回命令按钮操作中,则不会导航。

  • 如果我按如下方式进行重定向:

    /li>

它正确导航到友好的 URL,但对话不起作用,因为在我重定向之前,我设置了在 commandbutton 操作中接收的对象,并且当在对话 bean 中导航该对象时为空。

知道如何解决吗?

提前致谢。

0 投票
1 回答
418 浏览

java - 如何从过滤器中获取 ConversationScoped CDI bean?

@SessionScoped从 Filter 中获取CDI bean相对容易。但是尝试注入@ConversationScopedbean 会引发以下错误:

这与对话当前是否处于活动状态无关。似乎 CDI 无法确定应该使用瞬态对话还是活动对话,因为我的过滤器发生在为@ConversationScopedbean 提供上下文之前。

可以使用哪种过滤器/拦截机制“足够晚”发生?

0 投票
1 回答
333 浏览

jsf-2 - @ConversationScope bean 不保留引用值

我正在尝试实现 Twitter 登录过程。在登录过程中,用户需要被重定向到 Twitter 网站以输入他/她的凭据,然后他/她将被重定向到我的网站 URL。在第一次重定向之前,应在请求之间存储和保留 RequestToken 对象(Twitter4J 库)的实例。

为此,我决定使用 ConverstaionScoped bean,但不幸的是,请求之间没有保留引用的值。

这是我的 JSF 页面:

推特.xhtml:

twitterRedirect.xhtml:

我的 Twitter 登录控制器:

在我看来,我正在密切关注使用 @ConverstaionScope 的示例,但我没有得到预期的结果。我应该怎么做才能在请求之间保留对象?