<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>Dickwin</title>
    <description>Life is pain
Love is vain</description>
    <link>http://dickwin.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>Struts&amp;amp;Debug Information</title>
        <author>dickwin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dickwin.javaeye.com">dickwin</a>&nbsp;
          链接：<a href="http://dickwin.javaeye.com/blog/23637" style="color:red;">http://dickwin.javaeye.com/blog/23637</a>&nbsp;
          发表时间: 2005年12月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="font-size: 18pt"><strong>Struts 调试中常见的错误</strong></span><br />以下所说的struts-config.xml和ApplicationResources.properties等文件名是缺省时使用的，如果你使用了多模块，或指定了不同的资源文件名称，这些名字要做相应的修改。<br />1、“No bean found under attribute key XXX”在struts-config.xml里定义了一个ActionForm，但type属性指定的类不存在，type属性的值应该是Form类的全名。或者是，在Action的定义中，name或attribute属性指定的ActionForm不存在。<br />2、“Cannot find bean&amp;XXX in any scope”在Action里一般会request.setAttribute()一些对象，然后在转向的jsp文件里（用tag或request.getAttribute()方法）得到这些对象并显示出来。这个异常是说jsp要得到一个对象，但前面的Action里并没有将对象设置到request（也可以是session、servletContext）里。可能是名字错了，请检查jsp里的tag的一般是name属性，或getAttribute()方法的参数值；或者是Action逻辑有问题没有执行setAttribute()方法就先转向了。还有另外一个可能，纯粹是jsp文件的问题，例如&lt;logic:iterate&gt;会指定一个id值，然后在循环里&lt;bean:write&gt;使用这个值作为name的值，如果这两个值不同，也会出现此异常。（都是一个道理，request里没有对应的对象。）<br />3、“Missing message for key "XXX"”缺少所需的资源，检查ApplicationResources.properties文件里是否有jsp文件里需要的资源，例如：<br />&lt;bean:message&amp;key="msg.name.prompt"/&gt;<br />这行代码会找msg.name.prompt资源，如果AppliationResources.properties里没有这个资源就会出现本异常。在使用多模块时，要注意在模块的struts-config-xxx.xml里指定要使用的资源文件名称，否则当然什幺资源也找不到，这也是一个很容易犯的错误。<br />4、“No getter method for property&amp;XXX of bean teacher”这条异常信息说得很明白，jsp里要取一个bean的属性出来，但这个bean并没有这个属性。你应该检查jsp中某个标签的property属性的值。例如下面代码中的cade应该改为code才对：<br />&lt;bean:write&amp;name="teacher"&amp;property="cade"&amp;filter="true"/&gt;<br />	注意在Form里的比如 是EmpNo 而在Form 的set,get方法的时候是 empNo 此处可能出错﹐注意为上﹔<br />5、“Cannot find ActionMappings or ActionFormBeans collection”待解决﹐检查配置文件,从Sturts-config-xml到web.xml看是否对应﹔<br />6、“Cannot retrieve mapping for action XXX”在.jsp的&lt;form&gt;标签里指定action='/XXX'，但这个Action并未在struts-config.xml里设置过。<br />7、HTTP Status 404 - /xxx/xxx.jspForward的path属性指向的jsp页面不存在，请检查路径和模块，对于同一模块中的Action转向，path中不应包含模块名；模块间转向，记住使用contextRelative="true"。<br />8、没有任何异常信息，显示空白页面可能是Action里使用的forward与struts-config.xml里定义的forward名称不匹配。<br />9、“The element type "XXX" must be terminated by the matching end-tag "XXX".”这个是struts-config.xml文件的格式错误，仔细检查它是否是良构的xml文件，关于xml文件的格式这里就不赘述了。<br />10、“Servlet.init() for servlet action threw exception”一般出现这种异常在后面会显示一个关于ActionServlet的异常堆栈信息，其中指出了异常具体出现在代码的哪一行。我曾经遇到的一次提示如下：<br />java.lang.NullPointerException&amp;&amp;&amp;&amp;at&amp;org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.java:1003)&amp;&amp;&amp;&amp;at&amp;org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:955)<br />为解决问题，先下载struts的源码包，然后在ActionServlet.java的第1003行插入断点，并对各变量进行监视。很丢人，我竟然把struts-config.xml文件弄丢了，因此出现了上面的异常，应该是和CVS同步时不小心删除的。<br />11、“Resources not defined for Validator”这个是利用Validator插件做验证时可能出现的异常，这时你要检查validation.xml文件，看里面使用的资源是否确实有定义，form的名称是否正确，等等。
          <br/>
          <span style="color:red;">
            <a href="http://dickwin.javaeye.com/blog/23637#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 Dec 2005 09:06:41 +0800</pubDate>
        <link>http://dickwin.javaeye.com/blog/23637</link>
        <guid>http://dickwin.javaeye.com/blog/23637</guid>
      </item>
  </channel>
</rss>