如何删除 struts2 中的重复结果主体
How to Remove duplicate result body in struts2
我有一个全局结果 returns 给用户一个 404 错误。
我也有一个默认操作,我想做同样的事情。
我希望默认操作的成功结果能够扩展我的全局 notfound
结果,但我不知道该怎么做。我错过了什么吗?
<default-action-ref name="notfound" />
<global-results>
<result name="notfound" type="httpheader">
<param name="error">404</param>
<param name="errorMessage">Oh No You Didn't</param>
</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="com.me.s2ui.AccessException" result="notfound" />
</global-exception-mappings>
<action name="notfound">
<result type="httpheader">
<param name="error">404</param>
<param name="errorMessage">Oh No You Didn't</param>
</result>
</action>
正如@Aleksandr M and @Roman C在评论中所说,我想要的是不可能的。发布问题后我意识到我想登录默认操作,所以我最终写了一个 class.
@org.apache.struts2.convention.annotation.Action("notfound")
public class DefaultAction implements Action, ServletRequestAware
{
private static Logger logger = LogManager.getLogger(DefaultAction.class);
private HttpServletRequest request;
@Override
public String execute() throws Exception
{
logger.warn("Unknown target "+request.getRequestURI());
return "securityerror";
}
@Override
public void setServletRequest(HttpServletRequest req)
{
this.request = req;
}
}
Struts.xml
<default-action-ref name="notfound" />
<global-results>
<result name="intLogin" type="redirect">${#request.loginUrl}</result>
<result name="input" type="tiles">user</result>
<result name="securityerror" type="httpheader">
<param name="error">404</param>
<param name="errorMessage">Oh No You Didn't</param>
</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="com.me.s2ui.AccessException" result="securityerror" />
</global-exception-mappings>
我有一个全局结果 returns 给用户一个 404 错误。 我也有一个默认操作,我想做同样的事情。
我希望默认操作的成功结果能够扩展我的全局 notfound
结果,但我不知道该怎么做。我错过了什么吗?
<default-action-ref name="notfound" />
<global-results>
<result name="notfound" type="httpheader">
<param name="error">404</param>
<param name="errorMessage">Oh No You Didn't</param>
</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="com.me.s2ui.AccessException" result="notfound" />
</global-exception-mappings>
<action name="notfound">
<result type="httpheader">
<param name="error">404</param>
<param name="errorMessage">Oh No You Didn't</param>
</result>
</action>
正如@Aleksandr M and @Roman C在评论中所说,我想要的是不可能的。发布问题后我意识到我想登录默认操作,所以我最终写了一个 class.
@org.apache.struts2.convention.annotation.Action("notfound")
public class DefaultAction implements Action, ServletRequestAware
{
private static Logger logger = LogManager.getLogger(DefaultAction.class);
private HttpServletRequest request;
@Override
public String execute() throws Exception
{
logger.warn("Unknown target "+request.getRequestURI());
return "securityerror";
}
@Override
public void setServletRequest(HttpServletRequest req)
{
this.request = req;
}
}
Struts.xml
<default-action-ref name="notfound" />
<global-results>
<result name="intLogin" type="redirect">${#request.loginUrl}</result>
<result name="input" type="tiles">user</result>
<result name="securityerror" type="httpheader">
<param name="error">404</param>
<param name="errorMessage">Oh No You Didn't</param>
</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="com.me.s2ui.AccessException" result="securityerror" />
</global-exception-mappings>