1

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

public class MyCustomActionMapper implements ActionMapper {

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

2 回答 2

0

ActionMapping getMapping(javax.servlet.http.HttpServletRequest request, 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
于 2012-12-24T09:38:42.753 回答
0

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

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

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

因此,您照常从 struts.xml 映射您的操作和结果类型,而不是在您的操作映射器中。

也看一下DefaultActionMapper 源代码......任何地方都没有结果类型,这不是管理它们的地方。

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;
}
于 2012-12-24T10:03:49.570 回答