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

log4j:WARN No appenders 警告

WARN PageNotFound: No mapping found for HTTP request with URI