动作表单中变量的默认初始化

时间:2010-07-31 08:25:15

标签: javascript web-applications struts2 struts

我做了一个像:

MyForm extend ActionForm{

  list<Menu> MenuList=null;

  MyForm(){

    super();

    setMenuList(); //initialize menu list

  }

}

菜单对象具有字符串desciption和布尔变量,用于选择与否。

在网页中,我正在迭代列表以显示所有菜单和这些布尔变量的复选框。但是每次我想访问所选项目时,列表都会设置为默认值。那是因为构造函数,我定义了????? 请帮帮我吧?

有没有其他方法来初始化变量,我也尝试在其getter函数上初始化列表,但它给了我一个空指针异常。我甚至都不明白为什么会这样。

1 个答案:

答案 0 :(得分:1)

查看Prepare interceptor。它允许您在调用操作之前,在任何其他Action逻辑发生之前自动调用prepare方法:

public class MyForm extend ActionForm implement Preparable {

  list<Menu> MenuList=null;

  prepareView(){
      // initialize your menu list
      List yourMenu = new ArrayList();
      yourMenu.add("foo");
      yourMenu.add("bar");
      setMenuList(yourMenu);
  }

  view(){
      return INPUT;
  }
}

在上面的示例中,当您调用MyForm的view()方法时,将首先调用prepareView(),设置菜单并准备好在INPUT上使用。

您可能还需要考虑在操作期间向会话添加yourMenu,以便在遇到验证错误时仍然可以使用它。