SessionScoped Bean变量在页面加载之间失去价值

时间:2015-08-13 12:53:16

标签: jsf javabeans

我有以下SessionScoped bean: 如您所见,我初始化了一些稍后将需要的页面加载变量。

@ManagedBean
@SessionScoped
/*
* CassandraBean is the backing bean for holding and managing information  that is specific to each user session.
*/
public class CassandraBean implements Serializable {

private static final long serialVersionUID = 3542953038465572524L; 
private ResultSet rs;
private HashMap<String, TInfo> tur; 
private ArrayList<ErrorInfo> errors;    
private ArrayList<String> selected; 
private String selectedErrCode="114";
private LocalDate endDate=LocalDate.now();
private LocalDate startDate=LocalDate.of(endDate.getYear()-4, endDate.getMonthValue(), endDate.getDayOfMonth());

private CassandraManager cm;

/*
 * Creates a new instance of this bean, connects to the server and loads up data
 * Also starts a timer to refresh the data every 10 minutes.
 */
public CassandraBean() {
    cm=new CassandraManager("192.168.129.136", "keyspacename");
    createData();
    selected=new ArrayList<String>();
    selected.add("B01");

    Timer timer = new Timer();

    //queries the DB every 10 mins
    timer.scheduleAtFixedRate(new TimerTask() {
          @Override
          public void run() {
              createData();
          }
        }, 10*60*1000, 10*60*1000);
}

调用构造函数后,一切都很好。在调试器中检查时,所有变量都有值。

但是当我使用另一个bean中的方法导航到另一个页面时,所选的变量和selectedErrCode会丢失它们的值。它们未设置为null,但selectedErrCode变为空字符串,并且选中它将变为空ArrayList。

这个问题是我需要保留那些值,因为这样会调用以下方法。

public ArrayList<ErrorInfo> getErrors(){ getErrorData(selected, selectedErrCode, startDate, endDate); return errors; }

此方法由我的xhtml页面中的数据表调用以填充表格。 加载页面后,用户可以使用onpage输入表单进行查询,并且将从输入表单中选择所选的,选定的ErrCode,startDate和endDate。

如果有帮助,我会使用JBoss 6.3 EAP。

0 个答案:

没有答案