簡単かもしれませんが、私は 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 メソッドが呼び出されていないようです。スロー例外を配置しましたが、実際には呼び出されません。
私はこの方法でアクションを呼び出すようにしています: