Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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 Seam 2.3,JSF 2.0-用于<;h:选择一个功能表/>;_Java_Ajax_Jsf_Jboss_Seam - Fatal编程技术网

Java Seam 2.3,JSF 2.0-用于<;h:选择一个功能表/>;

Java Seam 2.3,JSF 2.0-用于<;h:选择一个功能表/>;,java,ajax,jsf,jboss,seam,Java,Ajax,Jsf,Jboss,Seam,我正在将我们的主要应用程序从Seam 2.2迁移到Seam 2.3beta1,以获得JSF 2.0和JPA 2.0的一些好处。大部分情况下,进展顺利。然而,事实证明,JSF2.0和RichFaces4.x中的一些Ajax更改在移植代码方面存在问题 我有一系列的组件,它们是基于其他组件的内容填充的。例如,第一个菜单选择项目类别。选择某个值后,将从数据库中检索该类别的子类别,并作为第二个菜单的选择项。整个过程是会话范围的。目前,代码如下所示: <h:selectOneMenu value="#

我正在将我们的主要应用程序从Seam 2.2迁移到Seam 2.3beta1,以获得JSF 2.0和JPA 2.0的一些好处。大部分情况下,进展顺利。然而,事实证明,JSF2.0和RichFaces4.x中的一些Ajax更改在移植代码方面存在问题

我有一系列的组件,它们是基于其他组件的内容填充的。例如,第一个菜单选择项目类别。选择某个值后,将从数据库中检索该类别的子类别,并作为第二个菜单的选择项。整个过程是会话范围的。目前,代码如下所示:

<h:selectOneMenu value="#{newObjAction.category}"
            required="true"
            requiredMessage="You must select a category"
            style="width:300px;">
        <s:selectItems var="cat"
            value="#{newDesignAction.designCategories}" label="#{cat.name}"
            noSelectionLabel="Select a category..."
            hideNoSelectionLabel="true" />
        <s:convertEntity />

        <a:support event="onchange" reRender="subCategoryPanel"
            limitToList="true" ajaxSingle="true" status="subCategoryStatus" />
</h:selectOneMenu>

这在Seam 2.2和JSF 1.2中没有问题。但是,已从JSF2.0中删除。我尝试过这样的方法:

<f:ajax listener="#{newObjAction.handleCategoryChange}">

它按预期触发事件,但有一个大问题:它没有传播对话。因此,当侦听器对象即将被调用时,它会被拦截,用户会从
pages.xml
重定向到定义的
no-conversation视图id
。使用
时,是否有传播对话的方法?有没有更好的方法来实现这一点?此时,整个迁移处于停滞状态,因为这是应用程序中的一个主要组件


我非常感谢任何帮助或建议。

我不是Seam的家伙,但在JSF2中,您只需将托管bean放在视图范围内(并返回
null
/
void
on action(listener)方法,以便在与同一视图交互时保持其活动状态)。Seam对话会自动传播以进行回发(a4j:support执行的)。我的newObjAction类是会话范围的,而我的newObjAction.handleCategoryChange()是方法确实返回void。据我所知,会话传播是问题所在,所以我真的不确定这里发生了什么。不幸的是,Seam 2.3的JSF2资源非常稀少,因此没有太多的示例可供使用。我不是Seam人,但在JSF2中,您只需将托管bean放在视图范围内(并在action(listener)方法上返回
null
/
void
,以便在与同一视图交互时保持其活动状态)。Seam会话将自动传播以进行回发(a4j:support执行回发)。My NewObjection类是会话范围,My NewObjection.handleCategoryChange()是方法确实返回void。据我所知,对话传播是问题所在,所以我真的不确定这里发生了什么。不幸的是,Seam 2.3的JSF2资源非常稀少,因此没有太多的示例。