项目中需要增加一个action,此action运行后返回与登陆后的index的页面相同,但是页面中有额外的js来进行模拟附加参数点击跳转功能。
实现这个功能有几个注意点:
1. 该action最好不要放在.web package下,而是放到.terminal package下,不影响项目原来管理(so java文件必须放在terminal, 配置路径要在根目录路径下)
2. 改action访问路径要为http://localhost:8080/tms/xxx.action,以使后续其他菜单操作不收影响
2. 修改index.jsp最好不要放到WEB-INF根目录下,而是放到WEB-INF/content/terminal下,方便管理(so jsp文件必须放在terminal下,配置对应路径)
3. 需要修改return string,这样不要直接返回convention约定的jsp,而是可以自己修改
基于上面的原因,所以采用注解配置来跳出convention约定的规则
@Action(value = "/terminal-map-manager", results = { @Result(name = "manager", location = "terminal/terminal-map-manager.jsp") })
value:配置访问路径,使用/表示根路径,后面加上访问路径,不需要action结尾,注意!
results/result:配置结果映射
name: 配置返回的String, location:配置jsp所在路径,这样可以自由定义路径啦
注意:对Action类中的方法添加@Result注解,@Result将只作用于被添加的方法。Action类方法上添加的@Result优先级高于Action类上添加的@Result。(前者覆盖后者)
@Action(value = "/terminal-map-manager", results = { @Result(name = "manager", location = "terminal/terminal-map-manager.jsp") })
public String execute() throws Exception {
Map paramMap = Struts2Utils.getRequest().getParameterMap();
String[] sn = (String[])paramMap.get("filter_LIKES_sn");
System.out.println("sn:"+sn);
String[] tsn = (String[])paramMap.get("filter_LIKES_terminal-sn");
System.out.println("tsn:"+tsn);
paramName="";
if(sn != null && sn.length >0){
paramName = "filter_LIKES_sn";
}
if(tsn != null && tsn.length >0){
paramName = "filter_LIKES_terminal-sn";
}
System.out.println("paramName:"+paramName);
param="";
param = Struts2Utils.getParameter(paramName);
System.out.println("param:"+param);
if(param != null && param.length()>0 && paramName != null && paramName.length() >0){
//获取当前用户
MUser user = (MUser) Struts2Utils.getSession().getAttribute(LoginAction.CURRENT_USER_KEY);
//根据用户Id获取当前用户的可操作菜单
menus = menuService.searchMenu(user.getId());
return "manager";
}else{
return NONE;
}
}