﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-扬帆出海-文章分类-SSH系列</title><link>http://www.blogjava.net/liu0909/category/41258.html</link><description>学习,永无止境.......</description><language>zh-cn</language><lastBuildDate>Tue, 25 Aug 2009 23:37:06 GMT</lastBuildDate><pubDate>Tue, 25 Aug 2009 23:37:06 GMT</pubDate><ttl>60</ttl><item><title>Struts2.1.6的开发模式问题</title><link>http://www.blogjava.net/liu0909/articles/292565.html</link><dc:creator>扬帆出海</dc:creator><author>扬帆出海</author><pubDate>Tue, 25 Aug 2009 13:04:00 GMT</pubDate><guid>http://www.blogjava.net/liu0909/articles/292565.html</guid><wfw:comment>http://www.blogjava.net/liu0909/comments/292565.html</wfw:comment><comments>http://www.blogjava.net/liu0909/articles/292565.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liu0909/comments/commentRss/292565.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liu0909/services/trackbacks/292565.html</trackback:ping><description><![CDATA[<p>使用Struts2.1.6，如果设为开发模式，即</p>
<p>&lt;constant name="struts.devMode" value="true"/&gt; 或者<br />
&lt;constant name="struts.configuration.xml.reload" value="true"/&gt;</p>
<p>启动Tomcat时，会出现以下异常：</p>
<p>org.apache.catalina.core.StandardContext filterStart<br />
严重: Exception starting filter struts2<br />
java.lang.NullPointerException<br />
&nbsp;&nbsp;&nbsp; at com.opensymphony.xwork2.util.FileManager$FileRevision.needsReloading(FileManager.java:209)<br />
&nbsp;&nbsp;&nbsp; at com.opensymphony.xwork2.util.FileManager.fileNeedsReloading(FileManager.java:60)<br />
&nbsp;&nbsp;&nbsp; at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.needsReload(XmlConfigurationProvider.java:325)<br />
&nbsp;&nbsp;&nbsp; at org.apache.struts2.config.StrutsXmlConfigurationProvider.needsReload(StrutsXmlConfigurationProvider.java:168)<br />
&nbsp;&nbsp;&nbsp; at com.opensymphony.xwork2.config.ConfigurationManager.conditionalReload(ConfigurationManager.java:220)<br />
&nbsp;&nbsp;&nbsp; at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:61)<br />
&nbsp;&nbsp;&nbsp; at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:774)<br />
&nbsp;&nbsp;&nbsp; at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:191)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.ApplicationFilterConfig.&lt;init&gt;(ApplicationFilterConfig.java:108)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3709)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.StandardContext.start(StandardContext.java:4363)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:926)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:889)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.StandardService.start(StandardService.java:516)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.startup.Catalina.start(Catalina.java:578)<br />
&nbsp;&nbsp;&nbsp; at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />
&nbsp;&nbsp;&nbsp; at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br />
&nbsp;&nbsp;&nbsp; at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br />
&nbsp;&nbsp;&nbsp; at java.lang.reflect.Method.invoke(Method.java:597)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)<br />
&nbsp;&nbsp;&nbsp; at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)<br />
2009-2-4 22:40:54 org.apache.catalina.core.StandardContext start<br />
严重: Error filterStart<br />
2009-2-4 22:40:54 org.apache.catalina.core.StandardContext start<br />
严重: Context [/Struts2Demo2] startup failed due to previous errors</p>
<p>问题及解决方法：</p>
<p>做上个项目的时候就出现了这个异常，网上查了很多资料，有人说这个是216版本的BUG，还有一个.patch补丁文件，打上补丁就没问题了，下一个版本就进行修订，当时也不会打补丁就放弃了开发模式。今天又碰见这个问题，百度了一下竟然又解决方法了，原因很简单也很令人汗颜，就是&#8220;tomcat的安装路径包含空格&#8221;，重装了下Tomcat测试果然没问题，汗死了啊！</p>
<p>下面几个知识点是从别人那里COPY来的，O(&#8745;_&#8745;)O哈哈~</p>
<p>下面是4个开发模式常用配置的简介---<br />
&nbsp;&nbsp;&nbsp; &lt;!-- 开启使用开发模式，详细错误提示 --&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;!-- &lt;constant name="struts.devMode" value="true"/&gt;--&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;!-- 指定每次请求到达，重新加载资源文件 --&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;!-- &lt;constant name="struts.i18n.reload" value="true"/&gt;--&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;!-- 指定每次配置文件更改后，自动重新加载 --&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;!-- &lt;constant name="struts.configuration.xml.reload" value="true"/&gt;--&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;!-- 指定XSLT Result使用样式表缓存 --&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;!-- &lt;constant name="struts.xslt.nocache" value="true"/&gt;--&gt;<br />
<br />
2.零配置插件codebehind一旦导入就必须进行init-param初始化配置，否则报错：packageAction can't mapping action!<br />
<br />
3.&lt;s:i18n name="???"&gt;&lt;/s:i18n&gt;包住那个标签，该标签就加载它指定的国际化文件，不管是text,textfield还是form都是如此。<br />
<br />
4.action实例、xxxScope对象都在ValueStack内，直接使用${}调用<br />
<br />
5.使用append标签时，没有所谓的将map和list集合对象连接起来的说法，在创建map对象的使用的语法为#{:,}，如果省略冒号，则默认value为null。<br />
<br />
5.StackContext 中的对象可以理解为struts2标签库使用的专用对象，比如通过value属性调用：value="#xxx.xxx.xxx..."<br />
<br />
6.ValueStack是StackContext的顶级对象，可以不需要#前缀使用，StackContext中的某些已建立对象可以通过比如在某些标签中设置var属性调入根对象ValueStack，达到省略#号的目的。在实际中则可以理解为在标签内临时新建的一个或多个对象，通过var属性指定的名称访问 value="xxx.xxx.xxx...."<br />
<br />
7.${requestScope.xxx.name} 与 &lt;s:property value="#request.xxx.name"/&gt;（escapse属性设置为false） 表达的内容相同，都是输出request范围内的xxx对象的name属性值，且无论是否该值包含html代码</p>
<img src ="http://www.blogjava.net/liu0909/aggbug/292565.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liu0909/" target="_blank">扬帆出海</a> 2009-08-25 21:04 <a href="http://www.blogjava.net/liu0909/articles/292565.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>