我在我们的迁移从煤层2.2主要应用到Seam 2.3beta1,为了得到一些JSF 2.0和JPA 2.0的好处的过程。 在大多数情况下,它的顺利进行。 然而,其中一些在JSF 2.0和RichFaces的4.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。 然而,已经从JSF 2.0中删除。 我已经试过这样的事情在它的位置:
<f:ajax listener="#{newObjAction.handleCategoryChange}">
它触发如预期的事件,但是有一个很大的问题:它没有传播的谈话。 其结果,当收听对象将要被调用它被截取,并且用户被重定向到所定义的no-conversation-view-id
从pages.xml
。 使用时,有什么办法可以传播对话<f:ajax />
有没有更好的方式来做到这一点? 在这一点上,整个迁移在静止不动,因为这是在应用程序中的重要组成部分。
我真的很感激任何帮助或建议。