0

キャンパスごとに分けたページがあります。基本的には同じページですが、キャンパスによって情報を変えています。

パラメータ「キャンパス」、現在使用されているキャンパスを設定します。

これは非常にうまく機能します。たとえば、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();
}
4

0 に答える 0