在不同请求之间维护操作变量的值

时间:2011-12-12 10:01:24

标签: struts2 action

我是开发应用程序的struts2。 动作类的示例代码是

class sampleAction extends Action {
private List<Employee> employee;
public validate(){
--logic for validation
}
public String prepopulate(){
--logic for populating value of employee list
}
--getters and setters
}

现在我的问题是页面加载我调用prepopulate函数并填充员工列表的值。调用页面提交后验证方法,在此期间如果发生某些错误,控制重定向到jsp。但这次员工名单的价值是空的。我在struts2中将此列表用于autocompleter标记。

1 个答案:

答案 0 :(得分:4)

我从未使用Struts 2内置验证机制,因为我更喜欢客户端验证以避免额外的往返。这纯粹是个人选择,而不是标准。

首先,我建议您不要使用Action并使用ActionSupportActionSupport提供了很多开箱即用的功能,您无需自己做所有事情。

我假设您正在使用defaultStack,如果是这种情况,则提供开箱即用的Prepare Interceptor,它负责在调用操作本身之前准备任何值。

在您的情况下,在validate方法之前调用execute,因此您永远不会有机会重新填充JSP中所需的值。

您需要确保在操作类中使用prepare()方法。以下是此拦截器的更多详细信息:

Prepare Interceptor
FAQ: How do we repopulate controls when validation fails