<action-mappings> 
<action path="/loginAction" 
type="loginstrutspro.LoginAction" 
scope="request" 
validate="false"> 
</action> 
</action-mappings> 里面加一句:name="loginAcitonForm"试试。<action-mappings> 
<action 
name="loginAcitonForm"
path="/loginAction" 
type="loginstrutspro.LoginAction" 
scope="request" 
validate="false"> 
</action> 
</action-mappings>

解决方案 »

  1.   

    是的,要加一个name="loginAcitonForm"才行。还有啊,你在action中用request.getParameter("name")和passwd,就失去formbean的意义了啊,那还要formbean干什么。
    正确的做法是:
    LoginAcitonForm loginForm=(LoginAcitonForm)form;
    String name=loginForm.getName();
    String passwd=loginForm.getPasswd();
    只要这样即可。
      

  2.   

    我改过了还有那个loginActionForm我写成loginAcitonForm已经改过来了
    <%@ taglib uri="/WEB-INF/Struts-html.tld" prefix="html" %>Struts也改成struts了,
    怎么还是不行,就是我在LoginAction 类的perform方法里直接return (actionMapping.findForward("failure"));也还是不行~
    真是郁闷死了,请高人帮帮忙啊另外一个问题:楼上的这句LoginActionForm loginForm=(LoginActionForm)form;的form是怎么来的
    new一个吗?小弟刚学struts,请指点!
    谢谢!
      

  3.   

    perform 是Struts1.0之前的版本用的Struts1.0之后改为 execute
    你用的是什么版本的Struts
      

  4.   

    form 是在执行perform方法时传进来的参数,就是个ActionForm对象.
      

  5.   

    还有:
    <taglib>
        <taglib-uri>/WEB-INF/struts-bean</taglib-uri>
        <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
      </taglib>
      <taglib>
        <taglib-uri>/WEB-INF/struts-html</taglib-uri>
        <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
      </taglib>
    改成:
    <taglib>
        <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
      </taglib>
      <taglib>
        <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
      </taglib>
      

  6.   

    public ActionForward perform(ActionMapping actionMapping,ActionForm actionForm,
                HttpServletRequest request,HttpServletResponse response){
    }我说的form实际上就是你这里的ActionForm actionForm,那你就这样引用就成了
    LoginAcitonForm loginForm=(LoginAcitonForm)actionForm;建议你还是先看看书先,否则这么自己鼓弄很浪费时间的。
    还有就是也有可能是你structs的jar包不全,你把structs需要引用的那些jar包全都拷贝到lib目录再试试.你现在这步和tld还没有太大的关系,如果你确保你的structs-config.xml已经被装载上了,那你现在着重需要配置的就只有structs-config.xml文件一个,另外就是你的LoginAction.java了,最有可能出现问题的就是structs-config.xml,你仔细看看.如果这个文件还没有装载上,那么可能出现问题的就是web.xml文件,你仔细检查一下
    <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
          <param-name>config</param-name>
          <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <init-param>
          <param-name>debug</param-name>
          <param-value>2</param-value>
        </init-param>
       <load-on-startup>0</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
      </servlet-mapping>
    这段.你可以试着把<load-on-startup>0</load-on-startup>中的0改成1看看。我的这段代码是
     <init-param>
                <param-name>debug</param-name>
                <param-value>3</param-value>    
            </init-param>
            <init-param>
                <param-name>detail</param-name>
                <param-value>3</param-value>           
            </init-param>
    没有错误.我记得这里是在应用启动的时候是一个装载顺序的问题,具体如何装载我也记不清楚了,你可以查查structs在这方面的资料就明白了。
    基本上就是这几处了,你再好好检查一下.
      

  7.   

    楼上说的都有道理!
    <action path="/loginAction" 
    type="loginstrutspro.LoginAction" 
    scope="request" 
    validate="false"> 
    </action> 
    这个没有加name="loginAcitonForm"的问题显而易见!类loginAcitonForm写法要继承!LoginAction的现在有已经使用execute()函数来处理,你的写法是l.0以前版本吧!
    你要看一下版本的问题!
    另外既然用了ActionForm传参用他好一些,不然就不必写这个类了!
      

  8.   

    你jsp页面中的
    <h3>请输入你的名字和密码</h3>
    <html:form action="/loginAction" method="post">action="/loginAction" 应该是action="loginAction.do"