我做了一个像:
MyForm extend ActionForm{
list<Menu> MenuList=null;
MyForm(){
super();
setMenuList(); //initialize menu list
}
}
菜单对象具有字符串desciption和布尔变量,用于选择与否。
在网页中,我正在迭代列表以显示所有菜单和这些布尔变量的复选框。但是每次我想访问所选项目时,列表都会设置为默认值。那是因为构造函数,我定义了????? 请帮帮我吧?
有没有其他方法来初始化变量,我也尝试在其getter函数上初始化列表,但它给了我一个空指针异常。我甚至都不明白为什么会这样。
答案 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
,以便在遇到验证错误时仍然可以使用它。