キャンパスごとに分けたページがあります。基本的には同じページですが、キャンパスによって情報を変えています。
パラメータ「キャンパス」、現在使用されているキャンパスを設定します。
これは非常にうまく機能します。たとえば、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 に実際のキャンパスを入力し、間違ったキャンパスで「get メソッド」を入力した場合、テストはパスしますが、すべての情報が間違っています。
私の行動
@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();
}