Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF/Seam-提交时新组件实例?_Java_Jsf_Seam - Fatal编程技术网

Java JSF/Seam-提交时新组件实例?

Java JSF/Seam-提交时新组件实例?,java,jsf,seam,Java,Jsf,Seam,我对JSF的困惑还在继续。这是a的延续,但我觉得有必要提出一个新问题。我有一个seam组件,它期望注入一个URL参数,以便从方法中检索列表。这在第一次导航到页面时非常有效。列表用于显示填充的许多不同的selectOneRadio组 现在在提交时,我无法获得要注入的URL参数或在组件上设置的URL参数!添加会导致抛出Facesceceptions 然后我尝试将列表设置为对象上的一个实例变量,当在submit上进行后续调用时(我也不理解为什么这样做),我检查变量是否非null:如果不是,则返回它 现

我对JSF的困惑还在继续。这是a的延续,但我觉得有必要提出一个新问题。我有一个seam组件,它期望注入一个URL参数,以便从方法中检索
列表。这在第一次导航到页面时非常有效。
列表
用于显示填充
的许多不同的
selectOneRadio

现在在提交时,我无法获得要注入的URL参数或在组件上设置的URL参数!添加
会导致抛出Facesceceptions

然后我尝试将
列表
设置为对象上的一个实例变量,当在submit上进行后续调用时(我也不理解为什么这样做),我检查变量是否非null:如果不是,则返回它

现在我发现一个新的组件实例是在提交时创建的

getList() called
this.toString(): .BeanAction@5fd98420

#### This is when submit is clicked
getList() called
this.toString(): .BeanAction@22aacbce
该组件具有以下注释:

Stateful
@Scope(ScopeType.CONVERSATION)
@Name("bean")
@Restrict("#{identity.loggedIn}")
有人能解释为什么创建了组件的新实例吗?
我真的不太确定该如何处理这件事。我认为隐藏参数会起作用,因为这就是我使用纯HTML的方式,我有点惊讶它不适用于JSF/Seam。

当您进入页面(或提交后),您是否在url中看到对话id?我担心Seam对话可能没有正确初始化。

我想到了解决方案,但我仍然不明白为什么需要它。通过将
添加到
标记中,我现在可以在表单submit中传播会话ID

但是,seam文档说明:

If you don't do anything special, a non-faces request  (a GET request for example)
will not propagate the conversation context and will be processed in a new 
temporary conversation.
这意味着Seam/JSF将我的表单提交视为“非faces请求”。为什么会这样?

方法
getList()
标记为
@Begin
,我可以多次刷新显示表单的页面,并使用相同的支持bean。当我点击提交时,我被重定向到我的
summary.xhtml
页面,并且有一个新的
cid
URL参数。如何在提交过程中维护对话?我尝试了此操作,但在单击提交时仍会获得一个新的对话id