如何从Struts2中的自定义动作映射器返回全局结果

时间:2012-12-24 09:28:35

标签: java struts2

如何在自定义动作映射器中返回自定义全局结果。

public class MyCustomActionMapper implements ActionMapper {

  public ActionMapping getMapping(HttpServletRequest request, 
                                  ConfigurationManager configManager) {
    ....
    ....
    return ????
  }
}

2 个答案:

答案 0 :(得分:0)

ActionMapping getMapping(javax.servlet.http.HttpServletRequest请求,                          ConfigurationManager configManager)

Expose the ActionMapping for the current request

Parameters:
    request - The servlet request
    configManager - The current configuration manager 
Returns:
    The appropriate action mapping String or null if mapping cannot be determined

答案 1 :(得分:0)

你确定这真的是你需要做的吗? Struts2为您提供开箱即用所需的所有工具,以实现几乎所有结果。

但是如果你真的想要实现自定义动作映射器,那么请看一下Struts2 Web 2.0 Projects by Ian Roughley的第9章,第266页到第269页;

  

ActionMapper接口提供了两种方法:一种将URL转换为动作映射,另一种将另一种方式转换为动作映射到URL。

因此,您可以像往常一样在struts.xml中映射Actions和结果类型,而不是在Action Mapper中映射。

看看DefaultActionMapper source code也是......在任何地方没有结果类型,这不是他们管理的地方。

public ActionMapping getMapping(HttpServletRequest request,
                                ConfigurationManager configManager) {
    ActionMapping mapping = new ActionMapping();
    String uri = getUri(request);

    int indexOfSemicolon = uri.indexOf(";");
    uri = (indexOfSemicolon > -1) ? uri.substring(0, indexOfSemicolon) : uri;

    uri = dropExtension(uri, mapping);
    if (uri == null) {
        return null;
    }

    parseNameAndNamespace(uri, mapping, configManager);

    handleSpecialParameters(request, mapping);

    if (mapping.getName() == null) {
        return null;
    }

    parseActionName(mapping);

    return mapping;
}