我正在开发一个帮助用户创建新帐户的JSF项目。在一个页面中,我有两个单选按钮;
<h:selectOneRadio value="#{accountBeans.radioData}" onClick="Common.showRadioButton(value)">
<f:selectItem itemValue="1" itemLabel="Item 1" />
<f:selectItem itemValue="2" itemLabel="Item 2" />
</h:selectOneRadio>
onclick它将转到Common.js中定义的javascript函数。在accountBeans.java中,getter和setter方法用于将bean中的值设置为;
public String radioData = null;
public String getRadioData() {
return radiodata;
}
public void setRadioData(String radioData) {
this.radioData = radioData;
}
当用户第一次登陆此页面时,应取消选择单选按钮。为此,我在accountBeans中创建了一个方法 reinitilize ,它将radioData的值重置为null,而不是使用以前存储的值。
我使用这种方法遇到的问题是,当用户在选择单选按钮后导航到其他页面并返回到同一页面时,该值将被重置。我需要用户选择的值才能保持直到创建帐户。
如果我不使用reinitialize方法重置存储的值,那么在创建新帐户时,仍会保留先前存储的值,这是一个问题。任何人都可以告诉我,如何保留radioData值,直到创建帐户,然后,为新帐户创建radioData值再次为null。
答案 0 :(得分:0)
当用户第一次登陆此页面时都是单选按钮 应该是未经选择的。为此,我创建了一个方法 在accountBeans中重新启用,将radioData的值重置为 null而不是使用先前存储的值。
这是自动发生的,您无需执行任何操作,因为它是第一次调用accountsBean
。
无论如何,仍然在等待你正在使用的bean范围的回复,但由于你使用我们的JS函数到我想的是重定向到另一个页面,你将不得不使用请求参数:< / p>
假设您的JS文件中包含以下内容:
switch(value){
case 1: window.location.href = "pageX.xhtml";
break;
case 2: window.location.href = "pageY.xhtml";
break;
}
然后将该值附加为请求参数:
"page.xhtml?radioData="+value;
然后在两个Facelet中,您可以通过以下方式访问请求参数:
<h:head>
<f:metadata>
<f:viewParam name="radioData" value="#{bean.radioData}" />
</f:metadata>
</h:head>
这样就可以保留所选数据:
<h:link outcome="/index" includeViewParams="true" value="Back" />
或
<h:form>
<h:commandButton value="Back" action="/index?faces-redirect=true&includeViewParams=true" />
</h:form>
includeViewParams=true
为下一个重定向设置相同的请求参数。