用struts2做了一个简单的入门程序,运行成功了,但是总出现这个警告:
警告: No configuration found for the specified action: 'checkLogin' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
虽说对系统的运行没什么影响,但是看着感觉很不舒服,所以想办法解决了。
login.jsp页面的相关源码:
- <s:form action="checkLogin" method="post">
- <s:textfield name="username" label="用户名:"></s:textfield>
- <s:password name="password" label="密码:"></s:password>
- <s:submit value="登陆"></s:submit>
- </s:form>
struts.xml的配置如下:
- <package name="struts" namespace="/" extends="struts-default">
- <action name="checkLogin" class="action.LoginAction" method="checkLogin">
- <result name="success">/index.jsp</result>
- <result name="login">/login.jsp</result>
- </action>
- </package>
解决办法:在login.jsp页面的form标记里加上属性 namespace="/",即:
<s:form action="checkLogin" method="post" namespace="/">
总之,这两个地方的namespace的属性值要一模一样,不能省略,否则就出现这样的警告。
No configuration found for the specified action: 'search.action' in namespace: '/'解决方案
这几天学习struts2标签的使用,总是会遇到这个问题。
我的jsp页面内容如下:
<s:form action="search.action" method="post" namespace="/">
</s:form>
struts配置如下:
<package name="lee" namespace="/" extends="struts-default">
<action name="search" class="lmz.TagAction">
<result name="input">/tag.jsp</result>
<result name="success">/tag.jsp</result>
</action>
</package>
可是每次都会遇到这样的问题:
警告: No configuration found for the specified action: 'search.action' in namespace: '/'. Form action defaulting to 'action' attribute's literal value.
在网上查找解决方法,说是命名空间配置错误,但是我在<s:form>和struts中的namespace都是'/'。
问题应该不是出在命名空间上,错误提示是在命名空间'/'下找不到search.action。原来是struts2的标签<s:form>会自动完成.action的添加,不用我们手动添加,所以把jsp页面中的
<s:form action="search.action" method="post" namespace="/">改成
<s:form action="search" method="post" namespace="/">就可以了。
但如果不使用struts2的标签,则需要手动添加.action。