1

簡単かもしれませんが、私は Struts2 の初心者です。

ProfileAction アクションに次のアクション メソッドがあります。

@Override
public String execute() throws Exception {
    HttpServletRequest request = ServletActionContext.getRequest();
    HttpSession session = request.getSession();
    String id = (String) session.getAttribute("id");
    if (id != null && !id.equals("") && !id.equals("0")) {
        return SUCCESS;
    }

    return "noSession";
}

そして、これは XML で:

    <action name="perfil" class="agenda.ProfileAction">
        <result name="success" type="tiles">/profile.tiles</result>
        <result name="noSession" type="tiles">/login.tiles</result>
    </action>        

    <action name="conexion" class="agenda.ProfileAction" method="login">
        <interceptor-ref name="jsonValidationWorkflowStack">
            <param name="validation.excludeMethods">init,input</param>
        </interceptor-ref>
        <result name="loginSuccess" type="tiles">/login/success.tiles</result>
        <result name="loginError" type="tiles">/login/error.tiles</result>
    </action>                

ご覧のとおり、デフォルトのメソッドに「noSession」という結果がありますが、ページを実行すると、「入力」の結果が必要なため、例外がスローされます。XML の「noSession」を「input」に置き換えると機能しますが、JSON の検証が機能しないという副作用があります。

execute メソッドが呼び出されていないようです。スロー例外を配置しましたが、実際には呼び出されません。

私はこの方法でアクションを呼び出すようにしています:

http://www.domain.com:8080/AgendaPlus/perfil

4

1 に答える 1

2

ほとんどの場合、検証エラーまたは型変換エラーが発生します。

これが発生すると、S2 は「入力」結果にルーティングしてフォームを再入力しようとします。

無関係ですが、このようにリクエストから値を取得すると、S2 の多くの機能が完全に無効になります。いくつかのチュートリアルなどを実行することを検討してください。組み込みの便利な機能を使用します。


インターセプター スタックを調べるための簡単で人間が読める方法の 1 つは、プロファイリング インターセプターを使用することです。これは、デフォルトとして設定するか、アクションごとに設定できます。

<action name="themes" class="test.ThemesAction">
  <interceptor-ref name="profiling">
    <param name="profilingKey">profilingKey</param>
  </interceptor-ref>
  <interceptor-ref name="defaultStack"/>
  <result>/WEB-INF/jsps/themes.jsp</result>
</action>

「true」に設定された「profilingKey」パラメーターを含むリクエストを行うと、ログに次のように表示されます。

2013-04-09 21:22:25,813 INFO  : [1959ms] - invoke: 
  [1959ms] - interceptor: exception
    [1959ms] - invoke: 
      [1959ms] - interceptor: alias
        [1959ms] - invoke: 
          [1959ms] - interceptor: servletConfig
            [1957ms] - invoke: 
              [1957ms] - interceptor: i18n
                [1957ms] - invoke: 
                  [1957ms] - interceptor: prepare
                    [1956ms] - invoke: 
                      [1956ms] - interceptor: chain
                        [1956ms] - invoke: 
                          [1956ms] - interceptor: debugging
                            [1956ms] - invoke: 
                              [1956ms] - interceptor: scopedModelDriven
                                [1956ms] - invoke: 
                                  [1956ms] - interceptor: modelDriven
                                    [1956ms] - invoke: 
                                      [1956ms] - interceptor: fileUpload
                                        [1956ms] - invoke: 
                                          [1956ms] - interceptor: checkbox
                                            [1956ms] - invoke: 
                                              [1956ms] - interceptor: multiselect
                                                [1956ms] - invoke: 
                                                  [1956ms] - interceptor: staticParams
                                                    [1955ms] - invoke: 
                                                      [1955ms] - interceptor: actionMappingParams
                                                        [1955ms] - invoke: 
                                                          [1955ms] - interceptor: params
                                                            [1954ms] - invoke: 
                                                              [1954ms] - interceptor: conversionError
                                                                [1954ms] - invoke: 
                                                                  [1954ms] - interceptor: validation
                                                                    [1897ms] - invoke: 
                                                                      [1897ms] - interceptor: workflow
                                                                        [1897ms] - invoke: 
                                                                          [7ms] - invokeAction: themes
                                                                          [1889ms] - executeResult: success
于 2013-04-09T00:44:13.853 に答える