Jsf 2 两次调用begin时JSF/CDI对话范围中出现错误
我使用的是CDI对话范围,当用户遵循正常场景时,它就可以了。但是,当用户未完成de“对话”时,我会出现以下错误:Jsf 2 两次调用begin时JSF/CDI对话范围中出现错误,jsf-2,cdi,conversation-scope,Jsf 2,Cdi,Conversation Scope,我使用的是CDI对话范围,当用户遵循正常场景时,它就可以了。但是,当用户未完成de“对话”时,我会出现以下错误: WELD-000214 Attempt to call begin() on a long-running conversation 显然,这是因为有两个调用begin方法而没有调用end方法 为了澄清这一点,我的设想是: 在第一页中,用户通过引用搜索产品 数字如果找到,我将调用对话。开始并导航到 产品详细信息页面 在该页面中,当用户按下保存按钮时 在这一点上,我称之为对话。结束
WELD-000214 Attempt to call begin() on a long-running conversation
显然,这是因为有两个调用begin方法而没有调用end方法
为了澄清这一点,我的设想是:
- 在第一页中,用户通过引用搜索产品 数字如果找到,我将调用对话。开始并导航到 产品详细信息页面李>
- 在该页面中,当用户按下保存按钮时 在这一点上,我称之为对话。结束
提前感谢这种行为是故意的。您可以轻松地检查对话。isTransient()以决定是否希望/需要使对话长期运行 如果调用begin(),并且当前对话已标记 在长时间运行时,将抛出一个IllegalStateException
()这种行为是故意的。您可以轻松地检查对话。isTransient()以决定是否希望/需要使对话长期运行 如果调用begin(),并且当前对话已标记 在长时间运行时,将抛出一个IllegalStateException
()始终首先开始对话使用isTransient()方法检查对话是否结束
始终使用isTransient()方法首先检查对话是否结束
public void beginConversation(){
if (!conversation.isTransient()){
conversation.end();
}
conversation.begin();
}