0

我有一个按校园划分的页面。基本上是同一页,但我根据校园更改信息。

参数“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();
}
4

0 回答 0