action从actionForm中取,actionForm从表单中取

解决方案 »

  1.   

    <form name="form1" action="xxAction.do">
    </form>
    我是问struts怎么取到form标签的中action属性中那个xxAction.do这个字符串的。
      

  2.   

    这个跟 struts 没什么关系把,你 submit 到一个纯 html 页面又如何?
      

  3.   

    关于这个是html的语法,当submit的时候,自动会找form的action属性。
      

  4.   

    可是structs如果不取到form标签中action属性的字符串它怎么知道初始化哪个配置?很着急知道其中原理,项目里可能会用到这个思想,请高手不吝赐教,谢谢。
      

  5.   

    看源码org.apache.struts.taglib.html.FormTag.javaprotected String getActionMappingURL() {        HttpServletRequest request =
                (HttpServletRequest) pageContext.getRequest();
            StringBuffer value = new StringBuffer(request.getContextPath());
            ApplicationConfig config = (ApplicationConfig)
                pageContext.getRequest().getAttribute(Action.APPLICATION_KEY);
            if (config != null) {
                value.append(config.getPrefix());
            }
            
            // Use our servlet mapping, if one is specified
            String servletMapping = (String)
                pageContext.getAttribute(Action.SERVLET_KEY,
                                         PageContext.APPLICATION_SCOPE);
            if (servletMapping != null) {
                String queryString = null;
                int question = action.indexOf("?");
                if (question >= 0) {
                    queryString = action.substring(question);
                }
                String actionMapping = getActionMappingName();
                if (servletMapping.startsWith("*.")) {
                    value.append(actionMapping);
                    value.append(servletMapping.substring(1));
                } else if (servletMapping.endsWith("/*")) {
                    value.append(servletMapping.substring
                                 (0, servletMapping.length() - 2));
                    value.append(actionMapping);
                }
                if (queryString != null) {
                    value.append(queryString);
                }
            }        // Otherwise, assume extension mapping is in use and extension is
            // already included in the action property
            else {
                if (!action.startsWith("/")) {
                    value.append("/");
                }
                value.append(action);
            }        // Return the completed value
            return (value.toString());    }
      

  6.   

    HttpServletRequest::getRequestURI ()...这个,没啥“思想”……
      

  7.   

    呵呵,问题已经解决了,是request.getServletPath()函数。