Java jsfajax更新行为
我有一个selectOneRadio,它使用ajax更新selectOneList: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}"/>
<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);
}