struts2开发问题

    技术2022-05-20  31

     

     

    1.开发中遇到的问题及解决方案

         1.1 Org.objectweb.asm.ClassVisitor方法visit问题

    问题

    Org.objectweb.asm.ClassVisitor方法visit问题

    原因

    Spring2.0 Aop包中有一个asm2.2.3.jar包把hibernateasm.jarClassVisitor覆盖掉了..

    解决方法

    Spring2.* Aop中的asm2.2.3.jar删除

    特殊说明

     

          

    1.2 strutsspring中整合中的问题

    问题

    Destroying singletons in

    org.springframework.beans.factory.support.DefaultListableBeanFactory@1be8bf1: defining

    beans [hbFactory,transaction,SysUserDAO,SysTradeDAO,

    SysOrgDAO,SysUserProxy,SysTradeProxy,SysOrgProxy]

     

    原因

    开始原因为缺少了个jta.jar

    解决方法

    添加jta.jarclasspath

    特殊说明

     

     1.3页面中使用datetimepicker

    问题

    页面中使用datetimepicker

     

    原因

     

    解决方法

    在页面中加入标签引用,struts-dojo-plugin-2.*.*.jar里面的struts-dojo-tags.tld文件复制到运行路径下,然后在要使用的jsp文件中加入

    <%@ taglib prefix="dojo" uri="/struts-dojo-tags.tld"  %>

    特殊说明

     

     

    1.4 Freemarker中使用国际化

     

    问题

    Freemarker中使用国际化

     

    原因

     

    解决方法

    <@s.i18n name="action.package">指定包和位置

    <@s.text name="HelloWorld" />

    </@s.i18n>

    转换的方法,进入控制台,然后进入要编译的文件下,输入转换的代码和文件

    E:/temp>native2ascii -encoding gb2312 aa.txt aaa.txt

    很奇怪为什么用UTF-8后出来的是乱码呢?真是不明白

    繁体中文的话用GBK,来自网上的信息

     

    特殊说明

     

     

    1.5 Freemarker语法及注意

     

    问题

    Freemarker语法及注意

     

    原因

     

    解决方法

    ${var1} = 变量 var1的值

    ${var1!””} = 变量如果不存在则显示””

     

    特殊说明

     

    1.6页面中使用frame实现导航栏的问题

     

    问题

    页面中使用frame实现导航栏的问题

     

    原因

    在用户的session失效时返回重新登录页面

    解决方法

    在页面中加入

    //防止被人frame.     <SCRIPT. LANGUAGE=javascript><!--     if (top.location != self.location)top.location=self.location;     // --></SCRIPT>

    特殊说明

     

    1.7 mysql5中的浮点数问题

    问题

    mysql5中的浮点数问题

     

    原因

    出现’246错误

    解决方法

    更新mysql连接包为mysql-connector-java-5.1.6-bin.jar

    特殊说明

     

     

     

    1.8 freemarker数字格式化问题

    问题

    Freemarker数字格式化问题

    原因

    显示超过4位时 2,009 不正常显示2009和小数点问题

    解决方法

    ${num?c} ${num?string}

    特殊说明

    如果从数据库取出一个0.22的数值,一般的输出${x?if_exists?html}, 这时是显示0,而不是0.22 应该写成${x?if_exists?string.number} 或者 ${x?if_exists.toString()?html}

     

    <#assign x = 1.234> ${x?string("0")} ${x?string("0.#")} ${x?string("0.##")} ${x?string("0.###")} ${x?string("0.####")} ${1?string("000.00")} ${12.1?string("000.00")} ${123.456?string("000.00")} ${1.2?string("0")} ${1.8?string("0")} ${1.5?string("0")} <-- 1.5, rounded towards even neighbor ${2.5?string("0")} <-- 2.5, rounded towards even neighbor ${12345?string("0.##E0")}  outputs this: 1 1.2 1.23 1.234 1.234 001.00 012.10 123.46 1 2 2 <-- 1.5, rounded towards even neighbor 2 <-- 2.5, rounded towards even neighbor 1.23E4 

    1.9 Unable to load configuration. - bean - jar:

    问题

    Unable to load configuration. - bean - jar:和程序无法启动

    原因

    解决方法

    有的书籍上描述的一个struts2工程需要加载的类过少,就导致这种问题,也就是说你加载的类少了,忘记是那本书了,struts2.0.4 好像是这个版本,他上面介绍的只需要加载commons-logging-版本.jar ,log4j.jar(非必须) ,ognl.jar ,xwork-core,jar ,struts2-core.jar ,commons-io.jar我只是简单的写了jar的名字,但是就跟一个名字一样,版本的位置有版本后,我后面的名字都省略了,但是其实上面介绍的jar是远远不够得,如果你是按这种jar加载的话,就会引起上面的异常,比较容易忽视的jar commons-fileupload-版本.jarfreemarker-版本.jar,其实这2jar也是struts2必须的jar

     

    特殊说明

     

     

    Xecrs.jar的问题

    问题

    Xecrs.jar的问题

     

    原因

    Myelcipse中的包版本跟tomcat中的包的版本不一样

    解决方法

    删除程序中的Xecrs.jar

    特殊说明

     

     

    Fckeditor错误问题

    问题

    Fckeditor无法进行replacetextarea

     

    原因

    web.xml中的Fckeidtor的访问路径问题, 无法访问

    解决方法

    注:注意FCKeditor是不支持虚拟目录的,你的所有路径都是针对网站根目录的绝对路径。所以要在使用的应用前加上对应的程序路径。

    或者修改fckeditor.js

    特殊说明

     

    org.apache.catalina.core.StandardWrapperValve invoke问题

    问题

    org.apache.catalina.core.StandardWrapperValve invoke

     

    原因

    <#include '/templates/pages.ftl' encoding="UTF-8" parse="true" /> 中不能使用应用的名称在前面

    解决方法

    <#include '/templates/pages.ftl' encoding="UTF-8" parse="true" /> 中不能使用应用的名称在前面

    特殊说明

    2010-6-12 16:52:15 org.apache.catalina.core.StandardWrapperValve invoke

    严重: Servlet.service() for servlet default threw exception

    java.lang.IllegalStateException

          at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:407)

          at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:725)

          at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)

          at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)

          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

          at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

          at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

          at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

          at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

          at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

          at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)

          at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)

          at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)

          at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)

          at java.lang.Thread.run(Thread.java:619)

     

    对象的克隆事项

    问题

    在操作数据的时候经常不小心直接修改源数据

    原因

    我们要用a2保存a1对象的数据,但又不希望a2对象数据被改变时不影响到a1。实现clone()方法是其一种最简单,也是最高效的手段。

    解决方法

    1.   public class A implements Cloneable {   

    2.       public String name;   

    3.     

    4.       public Object clone() {   

    5.           A o = null;   

    6.           try {   

    7.               o = (A) super.clone();   

    8.           } catch (CloneNotSupportedException e) {   

    9.               e.printStackTrace();   

    10.          }   

    11.          return o;   

    12.      }   

    13.    

    14.  }  

    特殊说明

     

    数据库c3p0问题

    问题

    连接数据库时出现无法连接或其他的问题could not instantiate CacheProvider: org.hibernate.

    原因

    不明。

    解决方法

    1.   hibernate.cfg.xml中进行c3p0的配置

    2.  

    特殊说明

     

    spring2.x+hibernate3+struts2 在首次登陆系统时抛出的异常,再登陆就正常

    问题

    Could not open Hibernate Session for transaction

    spring2.x+hibernate3+struts2 在首次登陆系统时抛出的异常,再登陆就正常

    原因

    异常:

    javax.servlet.ServletException: org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed:

     root cause

    org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed:

     

    解决方法

     1.jdbc url 增加 autoReconnect=true 一定能解决你的问题,可以定期观察一下 show processlist改进方法如下:<property name="url" value="jdbc:mysql://localhost/数据库实例名称?&useUnicode=true&characterEncoding=utf-8&autoReconnect=true"/>

     2.寻找支持重连的连接池。           注意:c3p0连接池支持重连;重连参数是:               idleConnectionTestPeriod   设置空闲连接测试周期               preferredTestQuery : 设置一查询语句,用于重连测试              testConnectionOnCheckin设置为true              testConnectionOnCheckout设置为true

     sessionFactory里配置:

    <property name="hibernateProperties">   <props><prop key="hibernate.autoReconnect">true</prop> </props></property>

    特殊说明

    MySQL Command Line Client中执行show variables like '%timeout%'

     

    多文件上传及原文件名问题

    问题

    Struts2多文件上传及原文件名问题

    原因

    无法获取上传后的原文件名

    解决方法

    后台属性

        private File[] upload ;

        private String[] uploadContentType;

        private String[] uploadFileName;

        private String savePath = "uploads";

    页面中的代码

    <form  action='${appurl!""}/request/uploadFile.action' method="post"  enctype="multipart/form-data">

    <input type="file" name="upload" />

    <input type="file" name="upload" />

    <input type="file" name="upload" />

    <input type="submit" value="上传" />

    </form>

    特殊说明

     

    使用hibernate时的lazy问题

    问题

    在文件中引用 product.lsCategory.cateName时出现错误

    原因

    hibernate映射的文件中默认是lazy的属性为true

    解决方法

    特殊说明

     

     

     

     

    Freemarker中不能使用boolean类型

    问题

    在类中使用boolean类型时,freemarker编译出错

    原因

    freemarker 不支持 boolean 类型 Templates do break when an attribute contains a boolean value

    解决方法

    把类中的所有boolean类型转换成

    Expecting a string, date or number here, Expression a.value is instead a freemarker.ext.beans.BooleanModel

    特殊说明

     

     

     


    最新回复(0)