Java jsfajax更新行为

Java jsfajax更新行为,java,ajax,jsf,facelets,Java,Ajax,Jsf,Facelets,我有一个selectOneRadio,它使用ajax更新selectOneList: <h:outputLabel for="categ" value="Category" /> <h:selectOneRadio id="categ" value="#{cdManager.store.cd.categ}" required="true"> <f:selectItems value="#{cdManager.store.cd.categs}"/>

我有一个selectOneRadio,它使用ajax更新selectOneList:

<h:outputLabel for="categ" value="Category" />
<h:selectOneRadio id="categ" value="#{cdManager.store.cd.categ}" required="true">
    <f:selectItems value="#{cdManager.store.cd.categs}"/>                    
    <f:ajax execute="categ" render="subcategs" listener="#{cdManager.categChanged}" />
</h:selectOneRadio>                                

<h:outputLabel for="subcategs" value="Sub-categ"/>
<h:selectOneListbox id="subcategs" value="#{cdManager.store.cd.subcateg}"     required="true">
    <f:selectItems value="#{cdManager.subcategsArray}"/>                    
</h:selectOneListbox>
我正在使用JSF2.0、NetBeansIDE7.0.1和GlassFish3.1,任何帮助都会很好,谢谢

问题是当用户 更改收音机(不提交)

这就是ajax的要点


如果使用浏览器的“后退”按钮,您将看到浏览器缓存中的页面。你可以。然后,您将从服务器获得一个带有新支持bean的新页面(如果它是请求或视图范围),或者检查
categChanged()
方法中是否存在其他字段。

我已经尝试禁用缓存,但它是一个会话bean。我还需要ajax,因为列表可能会增加。我只想将bean与表单“同步”。换句话说,如果用户填写表单并重新加载页面,就会出现一个空白表单?你的要求建议了一个更窄的范围。那么,为什么不在提交操作期间为新条目“准备”bean(与第一次准备时相同)?不,如果执行提交操作,则调用操作方法。通过这个操作方法,您可以“重新准备”bean字段。无绑定。当您在问题中写到“会话bean创建一个新的(空的)CD对象”时。您应该从submit操作方法创建一个新的空对象。将bean更改为查看范围而不是会话
public void categChanged()
{        
    //store.cd.categ is alredy set ? WHYYY ?
    String categ = store.getCd().getCateg();    
    this.subcategsArray = store.getCd().getSubcateg(categ);                                                 
}