日期:2014-05-16  浏览次数:20999 次

struts2 命名空间错误的问题
     大家好,我在学习<struts2权威指南>,途中遇到一个问题:就是namespace不对!
     情况:
       1,很多人说,jsp页面放在根目录不好,放在WEB-INF更加安全,所以我先在web.xml中,设置应用默认跳转到index.jsp。
       2,从index.jsp跳转到WEB-INF/jsp下面的登录界面:
       
  <jsp:forward page="WEB-INF/jsp/login.jsp"/>

       3,登录界面的请求表单:
          

            <s:form id="loginForm" action ="loginAction">
           <s:textfield name ="username" label="用户名"/>
           <s:password name ="password" label ="密码"/>
           <s:textfield name ="vercode" label ="验证码"/>
           <s:submit value ="登陆"/>
            <input type ="button" onclick ="jumpRegist();" value ="注册"/>
        </s:form>
         

        4,struts.xml的配置:
    

<package name="dg" extends="struts-default" >
              <action name ="loginAction" class ="action.LoginAction" >
           <result name ="input">WEB-INF/jsp/login.jsp</result>
           <result name ="failure">WEB-INF/jsp/error.jsp</result>
        </action>
           </package>

       5,结果就是,发布在tomcat上,有时候不能运行,提示错误:HTTP Status 404 -                        /loginregist/WEB-INF/jsp/loginAction.action
          有时候可以运行,但是有警告:
    警告: No configuration found for the specified action: 'loginAction.action' in namespace: '/WEB-INF/page'. Form action defaulting to 'action' attribute's literal value.
    这个警告是说:namepace配置不对,可是我在package里面都没有配置namespace啊,默认就是“”的,怎么会出错呢?

           
        
------解决方案--------------------
是这样



<struts>
     <!-- 开发模式,每次更改配置或者代码后,不用重启服务器 -->
      <constant name="struts.devMode" value="true" />  
      <!-- 允许struts动态请求,只是调用struts里面的某个方法 -->
      <constant name = "struts.enable.DynamicMethodInvocation" va