我有一个按校园划分的页面。基本上是同一页,但我根据校园更改信息。
参数“campus”,设置谁是当前使用的校区。
这项工作非常好,例如,如果我访问localhost/page/campus1/index.action,getCampus 方法返回“campus1”,这是预期的。
但是如果我访问localhost/page/campus1/index.action?campus=campus2, getCampus() 方法返回 "campus2"; 我尽量避免这种行为。我希望 {campus} 参数位于优先级的首位,并且没有人可以覆盖他。
我使用“param”拦截器中的“excludeParams”来排除“campus”,但现在getCampus返回null。
如何从 struts2 读取的参数中排除一些 get/post 方法?
或者
可以避免静态参数被其他参数覆盖吗?
编辑:我有一个拦截器,他说所选校园是否有效。
如果有人在 url 中输入了一个真实的校园,但输入了一个错误的校园的“获取方法”,则测试会通过,但所有信息都会出错。
我的行动
@Action(value="{campus}/index",
results={
@Result(name=SUCCESS,location="/jsp/campusindex.jsp"),
}
)
public String campusIndex(){
return SUCCESS;
}
public void setCampus(String campus){
this.campus=campus;
}
public String getCampus(){
return this.campus;
}
我的jsp
<%@ taglib prefix="s" uri="/struts-tags"%>
<s:label name="campus"/>
我的拦截器
public String intercept(ActionInvocation actionInvocation) throws Exception {
ActionConfig config = actionInvocation.getProxy().getConfig();
String campus = config.getParams().get("campus");
try{
Campus.isaValidCampus(campus);
} catch(Exception e){
return "error404";
}
return actionInvocation.invoke();
}