WARN Form:308 - No configuration found for the specified action: 'loginProducer.action' in n
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WARN Form:308 - No configuration found for the specified action: 'loginProducer.action' in n相关的知识,希望对你有一定的参考价值。
struts2的错误提示怎么解决
Struts.xml配置
<package name="struts2" extends="struts-default">
<action name="loginProducer" class="loginProducerAction">
<result name="success">/producersuccess.jsp</result>
</action>
</package>
html代码:
<center>
<h1><font color="red">生产商登录页面</font></h1>
<s:actionerror/>
<s:form action="loginProducer.action" method="post">
<s:textfield name="producer.username" label="用户名:" />
<s:password name="producer.password" label="密码:"/>
<s:textfield name="vercode" label="验证码:"/><br/>
<s:submit value="提交" />
</s:form>
验证码如图:<img alt="" src="authImg" id="authImg">
看不清<a href="#" onclick="refresh()">单击此处刷新</a>
<br/><br/>
如果未注册请单击此处<s:a href="producerregist.jsp">注册</s:a>
<s:a href="listProducer.action">查看所有用户</s:a>
</center>
提交表单后出现错误提示:
13:27:10,968 WARN Form:308 - No configuration found for the specified action: 'loginProducer.action' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
13:27:11,781 WARN Form:308 - No configuration found for the specified action: 'loginProducer.action' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
13:27:29,640 WARN Form:308 - No configuration found for the specified action: 'loginProducer.action' in namespace: '/'. Form action defaulting to 'action' attribute's literal value.
13:27:29,828 WARN Form:308 - No configuration found for the specified action: 'loginProducer.action' in namespace: '/'. Form action defaulting to 'action' attribute's literal value.
页面停留在登录页面,
浏览器显示地址: http://localhost:8080/Dammars/loginProducer.action
试过加namespace,问题还是不能解决。
警告: No configuration found for the specified action: '/myNameSpace/login.action' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
struts.xml配置信息(部分)
<package name="packageName" extends="struts-default" namespace="/myNameSpace">
<action name="login" class="com.jato.srvclink.test.login.LoginAction" method="login">
jsp页面配置信息(部分)
<s:form action="/myNameSpace/login.action">
思考:没有在''的namespace中发现指定的action '/myNameSpace/login.action'
答疑:因为配置的struts2标签并未指定namespace属性。所以struts2会默认从根命名空间"/"搜索action串'/myNameSpace/login.action',如果搜索不到将进入默认命名空间''搜索action请求串,在默认命名空间中是肯定找不到我们定义的action的,所以,struts2抛出一个警告信息。
但是为什么我们没有填写namespace,我们的请求也可以正常访问呢?
我们来看一下解析后的html
查看源码得到的html(部分)
<form id="login" onsubmit="return true;" action="/srvclink/myNameSpace/login.action" method="post">
我们看到form提交的action串是准确的url请求,action串确实是/srvclin(应用根)/myNameSpace(命名空间)/login.action。
命名空间中找不到action定义,并不意味着这个action真的不存在,只是我们的代码有问题而已。还有一点是我们在jsp页面的action请求中手动的加入了.action后缀。事实上struts2会自动追加.action的,因为我们并没有合法的使用struts2的标签,所以struts2这里并没有给我们追加.action,解析后的代码中存在的.action,完全是我们手动在jsp页面填写的,有疑问的网友可以不手动添加查看html。
我们修改我们的程序代码
jsp页面配置信息(部分)修改后加入namespace属性,修改action属性值为/login.action
<s:form action="/login.action" namespace="/myNameSpace">
请求页面后,大家很失望吧?警告依然存在。但是我们看一下警告信息。
警告信息:
警告: No configuration found for the specified action: '/login.action' in namespace: '/myNameSpace'. Form action defaulting to 'action' attribute's literal value.
没有在'/myNameSpace'的namespace中发现指定的action '/login.action'
毫无疑问,这里的警告和第一次的警告信息截然不同。我们现在存在命名空间,'/myNameSpace'能够被struts2检索到,并不是开始的''。那问题的关键在哪里呢?
在namespace中没有发现指定的action '/login.action' ???
我们来看一下struts.xml中的配置:
struts.xml配置信息(部分)
<package name="packageName" extends="struts-default" namespace="/myNameSpace">
<action name="login" class="com.jato.srvclink.test.login.LoginAction" method="login">
是的,我们'/myNameSpace'命名空间下,只有action名字为'login'的定义,并没有所谓的 '/login.action' 定义,所以struts2的警告并未错。如果大家对这个抱有怀疑,可以修改action的名字'login'为‘/longin.action’
<action name="/login.action" class="com.jato.srvclink.test.login.LoginAction" method="login">
请求页面时你会发现不在报警告信息,原因很简单。因为在命名空间为'myNameSpace'下确实存在命名为'/login.action'的action。
我们再次修改配置文件
jsp页面配置信息(部分)修改后action属性值为longin
<s:form action="login" namespace="/myNameSpace">
请求页面时,我们发现不再有警告信息了。
如果你有足够细心,我想你应该可以彻底的明白为什么struts2会报警了吧?你也应该明白了使用struts2标签action中添加/线后请求反而报错的原因了。 参考技术A 正确的写法应该是,<s:form method="post" action="loginProducer" namespace="" > ,即action那里不加“.action",namaspace=""即可。 参考技术B 如果你用Spring注入的,那么spring中的<bean id=""....Action class="包名.Action名称">
如果只用到了struts2,那么你的包名肯定没有对应上,需要包名.Action名称 参考技术C <package name="struts2" extends="struts-default" namespace="/"> 参考技术D 找不到你的action类 你写的action类怎么没有包呢
java出现以下警告:WARN No appenders;WARN Please initialize the log4j的处理方法
编译java或引用别的代码时出现以下警告:
log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
出现这个的原因是没有初始化log4j配置导致的
这个是个警告如果不上心可以不管,如果想去掉或者把日志记录下来,就要在程序中处理一下。
1.在src同级目录下新建文件夹config,config内新建文件log4j.properties,文件内容如下,每个配置的详细说明请见:http://www.cnblogs.com/likui360/p/7992982.html 可以根据自己的需求进行调整。
log4j.rootCategory=INFO, stdout , R log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n log4j.appender.R=org.apache.log4j.DailyRollingFileAppender log4j.appender.R.File=D:\\\\Tomcat 5.5\\\\logs\\\\qc.log log4j.appender.R.layout=org.apache.log4j.PatternLayout 1log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n log4j.logger.com.neusoft=DEBUG log4j.logger.com.opensymphony.oscache=ERROR log4j.logger.net.sf.navigator=ERROR log4j.logger.org.apache.commons=ERROR log4j.logger.org.apache.struts=WARN log4j.logger.org.displaytag=ERROR log4j.logger.org.springframework=DEBUG log4j.logger.com.ibatis.db=WARN log4j.logger.org.apache.velocity=FATAL log4j.logger.com.canoo.webtest=WARN log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN log4j.logger.org.hibernate=DEBUG log4j.logger.org.logicalcobwebs=WARN log4j.rootCategory=INFO, stdout , R log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n log4j.appender.R=org.apache.log4j.DailyRollingFileAppender log4j.appender.R.File=D:\\\\Tomcat 5.5\\\\logs\\\\qc.log log4j.appender.R.layout=org.apache.log4j.PatternLayout 1log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n log4j.logger.com.neusoft=DEBUG log4j.logger.com.opensymphony.oscache=ERROR log4j.logger.net.sf.navigator=ERROR log4j.logger.org.apache.commons=ERROR log4j.logger.org.apache.struts=WARN log4j.logger.org.displaytag=ERROR log4j.logger.org.springframework=DEBUG log4j.logger.com.ibatis.db=WARN log4j.logger.org.apache.velocity=FATAL log4j.logger.com.canoo.webtest=WARN log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN log4j.logger.org.hibernate=DEBUG log4j.logger.org.logicalcobwebs=WARN
2.在程序中导入:
import org.apache.log4j.Logger;
import org.apache.log4j.Priority;
import org.apache.log4j.PropertyConfigurator;
3.程序第一行加入初始化语句:
PropertyConfigurator.configure("config/log4j.properties");
重新编译,输出的内容中不再有警告信息,如果想看到就直接把log4j.rootCategory设置成OFF。
log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper).log4j:WARN Please initialize the log4j system properly.log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
以上是关于WARN Form:308 - No configuration found for the specified action: 'loginProducer.action' in n的主要内容,如果未能解决你的问题,请参考以下文章
python 使用rospy对warn_no_remap进行性能测试
log4j:WARN No appenders could be found for logger错误
Spring Boot启动时出现WARN:No MyBatis mapper was found in
Hexo博客开发之——WARN No layout index.html
WARN PageNotFound: No mapping found for HTTP request with URI