如何删除 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>