0

JSPページから送信するStruts2カスタムインターセプターでこのパラメーターをキャッチするにはどうすればよいですか?

<s:url var="remoteurl" action="jsontable">
    <s:param name="gridName">gridTableID</s:param>
</s:url>
  <sjg:grid
        id="gridTableID"

        caption="Customer Examples (Local Data)"
        href="%{remoteurl}"
        gridModel="gridModel"
        rowNum="-1"
        hidegrid="true"
....

編集:私のカスタムスタック:

<interceptors>
            <interceptor name="logingInterceptor" class="com.interceptors.LoggingInterceptor"></interceptor>
            <interceptor-stack name="newStack">
                <interceptor-ref name="logingInterceptor" />
                <interceptor-ref name="defaultStack" />
            </interceptor-stack>
        </interceptors>
        <default-interceptor-ref name="newStack"></default-interceptor-ref>
4

2 に答える 2

1

編集 2: インターセプターが要求パラメーターを取得できない場合は、問題に対するアトミックなアプローチをお勧めします。小さなステップを試して、問題を 1 つずつ解決してください。あなたの場合、私は次のように試みます:

1) インターセプター内にデバッグ用の「hello インターセプター」を配置して、アクションの呼び出しが実際にカスタム インターセプターを通過しているかどうかを確認します。

そうでない場合: 設定を確認してください (インターセプター、インターセプター スタック、パッケージ、アクションなど)。

もし、そうなら:

2)従来の方法で投稿するフォームに通常の変数を配置します(ajaxなどではなく<s:hidden name="foo" value="blabla"/>、JSPのフォーム内の変数だけで<s:submit、アクションへのボタンとともに投稿されます(インターセプタースタックを使用するためにマップされたアクション)カスタムインターセプター). インターセプターからその変数の値を出力してみてください.

変数が null の場合: アクション マッピングを再度確認し、Firebug Net モジュールを使用して、パラメータが実際に送信されているかどうかを確認します。

変数が読み取られた場合:

次に、問題は JQGrid の変数にあります。JSP でそれを参照している方法と、Firebug でページから出ているものをもう一度確認してください。

等...

内部に自分のものだけを含む新しい JSP を使用することをお勧めします。結果を表示および受信するための新しいアクションを使用し、空の execute() を使用します。コードをテストするための非常に小さなスケルトンで、外部に干渉がないことを確認します。ワークフローをアップ...


defaultStack編集: インターセプターの構成は問題ないようです (代わりに を除きますdefault-stackが、同じであると確信しています)。

すべてのアクションは、が定義されているのと同じ内部にあります<package><interceptors>?


なぜアクションではなくインターセプターで?そのデータをどのように処理する必要がありますか?

ちなみにコードはこうです。

public String intercept(ActionInvocation invocation) throws Exception {

   final ActionContext context = invocation.getInvocationContext();
   HttpServletRequest request = (HttpServletRequest) context.get(StrutsStatics.HTTP_REQUEST);

   String gridName = (String) request.getParameter("gridName");

   /* do something */

   return invocation.invoke();
}
于 2012-11-05T17:27:14.187 に答える
0

これを試して。Struts 2.0.14でうまくいきました。

public String intercept(ActionInvocation ai) throws Exception {
            ActionConfig config  = ai.getProxy().getConfig();  
            Map parameters       = config.getParams();  
            String menuId        = (String)parameters.get("empName"); 
于 2013-05-14T11:20:27.187 に答える