【发布时间】:2014-01-23 13:19:54
【问题描述】:
class SampleAction extends ActionSupport {
private Map<String,String> circleIdNameMap;
public String preprocess(){
--logic for populating value of MAP
}
--getters and setters
}
现在我的问题在于页面加载我调用preprocess 函数并填充Map 的值。在页面提交之后调用另一个方法,在此期间经过一些 DB 交互它重定向到 JSP,但这次 Map 的值是空的。我在 Struts2 中使用这个 Map 作为下拉标签。
我的preprocess 在链接中关联,例如:
href="/gma/preprocessConfigureTspThreshold?operatorId=5102&sessionId=12332"`
所以只有第一次点击链接时preprocess被调用,之后当我重定向到我的JSP所以它不会被调用,所以第二次Map的值是空的。
我应该将地图放入会话中以便保留吗?还是可以做点别的?
-
我读到不要使用
preprocess函数,使用Preparable接口。但根据文档:prepare 方法总是被 Struts 2 框架的 prepare 拦截器调用
每当为 Action 类调用任何方法时。
所以,每个方法都会调用它。我希望仅在页面加载时调用 preprocess。
【问题讨论】:
-
你如何调用方法
on page load?如果在页面加载时调用它,那么地图如何为空?您可以在return ERROR;之前简单地调用preprocess(),然后JSP 映射不会为空。 -
prepare 方法会在您请求操作时被调用。所以无论是页面加载还是任何用例
-
@Aniket:我的预处理在链接中关联,例如:href="/gma/preprocessConfigureTspThreshold?operatorId=5102&sessionId=12332"!所以只有第一次点击链接时调用预处理,之后当我重定向到我的 JSP 时,它不会被调用
-
“页面提交后”表示有另一个请求。动作是按请求实例化的;除非以某种方式填充,否则先前操作中的任何数据显然不会出现在后续请求中。
标签: java jsp jakarta-ee struts2 url-parameters