好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

STRUTS2开发中遇到的错误及解决方案.doc

4页
  • 卖家[上传人]:m****
  • 文档编号:394271783
  • 上传时间:2023-05-30
  • 文档格式:DOC
  • 文档大小:51KB
  • / 4 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 笔者记录下自己在开发过程中所遇到的一些常见的错误和警告,以供参考:1、 警告:Settings: Could not parse struts.locale setting, substituting default VM locale分析及解决方法:这是默认环境没有设置好,有两种方法可以解决在WEB-INF/classes/struts.properties或者src/struts.properties文件中如下配置:struts.locale=en_GB;或者在struts.xml中如下配置:2、 警告:No configuration found for the specified action: 'sum.action' in namespace: ''. Form action defaulting to 'action' attribute's literal value.分析及解决方法:由于jsp文件中标签它对应的源文件是

      ,sturts把action属性值当成了一个action name了,但这也不影响使用;但是对于使用了动态方法调用(struts.enable.DynamicMethodInvocation = true)就没有那么幸运了,提交时就会得到HTTP Status 404 - /context/sum错误。

      对于以上情况,可以把标签写成3、 ERROR:Cannot create JDBC driver of class '' for connect URL 'null'分析及解决方法:这是由于tomcat下的server.xml里的没有配置好或没有相应的配置,可按如下配置:4、 ERROR:Cannot load JDBC driver class 'com.microsoft.jdbc.sqlserver.SQLServerDriver'分析及解决方法:这是由于JDBC的驱动没有装,可将sqlserver需要的三个驱动包msbase.jar,mssqlserver.jar,msutil.jar拷贝到tomcat的安装目录下的 common\lib文件夹下面即可。

      5、 ERROR: Cannot create resource instance分析及解决方法:这是由于里type属性设置不正确,按不同的数据库相应的做出调整就好了6、 ERROR:javax.naming.NameNotFoundException: Name jdbc is not bound in this Context分析及解决方法:这个很明显,上下文中找不到所给的jdbc名称,仔细查看纠正一下就好了7、 严重: Exception starting filter struts2、Error filterStart、Context [/struts2] startup failed due to previous errors分析及解决方法:(1)在struts.xml中action中的包路径出错(2)在工程中导入一个commons-fileupload的包8、 java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'info' 无效分析及解决方法:出现这情况由两种可能性:(1)配置的数据库中没有info表或者是表名写错了,这是就要将其更改为info表所在的数据库名或表名; (2)程序当前打开的数据库并非是我们所配置的数据库,虽然机率很小,但是在以不同用户身份登录时就可能出现这种情况,因为server默认打开的是master数据库。

      这时可以将你要使用的数据库设置为默认或者是在sql语句中打开数据库(如:”use st select * from info”)9、 struts2中使用datetimePicker组件时的乱码显示分析及解决方法:参考 datetimePicker的使用.docx10、 log4j:WARN No appenders could be found for logger(mons.digester.Digester.sax)log4j:WARN Please initialize the log4j system properly分析及解决方法:由于缺少log4j.properties文件引起的,或是该文件位置放置不正确可以按要求格式创建一个log4j.properties文件,放到src目录下(会自动拷贝到WEB-INF\classes目录下)或直接放到WEB-INF\classes11、 在struts2表单验证过程中,当遇到验证错误或者类型转换错误时, struts2框架自动生成一条错误信息,并且将该错误信息放到addFieldError里面, 最后这个信息会显示在相应的错误页中.有时我们不希望这些错误出现在页面中,而是用自己的方式来表达,可以通过以下操作实现:1)表单标签有一个theme(主题)属性, 默认主题是使用表格; 还有Ajax等主题, 这里换为simple主题, 表示不再用表格封装这个标签;这样就可以消除自动错误提示了2)可以使用来显示错误,如果错误时ActionError,就需要标签来显示3)在表单提交失败时,希望原来填过的值可以保留,struts2的s标签自动有保留功能,html标签需要通过request的el表达式实现保留12、 Struts2环境下,使用自己定义的拦截器时,报HTTP-500错误分析及解决方法:HTTP-500是指内部服务器错误,所以错误处在运行的环境配置中;如果这时报NullPointerException,那错误很可能就是因为action.xml中忘记配置,这样就会导致struts2默认拦截器不能使用,给程序运行造成严重影响13、 INFO:The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path分析及解决方法:这时由于tomcat没能成功加载APR,可以到http://tomcat.heanet.ie/native/下载tcnative-1.dll文件,这里需要注意的是tcnative-1.dll有32位和64位两种,根据自己的JDK选择合适的tcnative-1.dll,放到%JDK-home%\bin目录下,再重启tomcat就能加载APR了14、 [SQLServer]当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'person' 中的标识列插入显式值分析及解决方法:由于标识列是自动增长类型,在默认情况下是不能插入显式值,也就是IDENTITY_INSERT默认为OFF;15、 使用Hibernate时,表中字段(例如:zd)的默认值失效分析及解决方法:由于hibernate通过session.save()来进行数据添加动作,如果程序中zd没有赋值,那么程序将会使用它的数据类型的默认值来进行添加,从而取代了数据库中配置好的默认值。

      可以通过以下操作来实现表中默认值生效:1) 在相关表的映射XML文件的class项增加:dynamic-insert="true";2)同时需要在相关字段设置:not-null=”false”16、 ids for this class must be manually assigned before calling save(): hibernate.Person分析及解决方法:hibernate出现这个错误的原因有可能因为,你的表中有个主键但是你插入的(调用save)时那个值是null.如果主键是int、short或long类型,可以设置generator class为native;如果是char类型,可以在其对应的Person.hbm.xml里的id标签里添加unsaved-value="null";或者在数据表里给主键添加默认值,然后在对应的id标签里添加dynamic-insert="true"17、 JSP中out.print("");语句跳转不成功:分析及解决方法:貌似没有问题,其实Response.Redirect()是asp中的跳转方法,可以使用JavaScript中的location.href='login.jsp'来替换,或者直接用java中的response.sendRedirect(‘url’)18、 Exception: Underlying input stream returned zero bytes分析及解决方法:由于数据表中有个字段为text类型的,不能将一个"NULL"值和一个""(empty)存储在text类型的字段中。

      否则查询时就会出现[Microsoft][SQLServer 2000 Driver for JDBC]Underlying input stream returned zero bytes 的异常了可以将这个字段设个默认值,如” ”,就能解决这个bug了19、 运用JS通过idName.submit()或getElementById(idName).submit()控制弹出层tdiv里表单提交不成功,弹出层里的内容由隐藏层ydiv提供(即tdiv.innerHTML=ydiv.innerHTML),提示对象不可用或提交后取得表单元素属性值为空分析及解决方法:ydiv的display属性为none,虽然IE不会进行预读取,但其他浏览器却会这么做,这样就id为idName的表单就有两个了,通过getElementById(idName).submit()提交的是隐藏层中的表单;通过idName.。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.