让我问一个问题,也许很简单,但我是 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”结果,但是当我运行页面时,它会引发异常,因为需要“输入”结果。当我用“input”替换 XML 中的“noSession”时,它可以工作,但副作用是 JSON 验证不起作用。
似乎没有调用执行方法。我什至放置了一个抛出异常,事实上,它没有被调用。
我正在准备以这种方式调用该操作: