在JSF bean

时间:2016-12-20 17:53:22

标签: javascript java jsf dojo

我正在开发一个帮助用户创建新帐户的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。

1 个答案:

答案 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&amp;includeViewParams=true" />
</h:form>

includeViewParams=true为下一个重定向设置相同的请求参数。