论坛首页 Java企业应用论坛

WebWork+Velocity中文问题解决

浏览 8880 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-08-24  
WebWork+Velocity中文问题解决:

1、webwork.properties文件中,添加:
webwork.i18n.encoding = GB2312
它主要是用来设置WebWork UI标签库的编码,如果不设置它将通过
System.getProperty("file.encoding")来获取默认字符编码。

2、velocity.properties文件中,添加:
input.encoding=GB2312
output.encoding=GB2312
default.contentType=text/html; charset=GB2312
它是用来设置.vm页面的编码方式

3、写一个Filter,将编码设置为GB2312。详细请看附件中的SetCharacterEncodingFilter文件和Web.xml的配置。
它解决Action数据传递时的编码。

建议:中文编码推荐统一使用:GBK,它的字符集比GB2312更全。
   发表时间:2004-08-24  
为啥不用UTF-8呢?
0 请登录后投票
   发表时间:2004-08-24  
我也觉得使用UTF-8更好。
使用UTF-8可能Java代码的编码也要为UTF-8
0 请登录后投票
   发表时间:2004-08-24  
why? java代码里面又不会出现中文。
0 请登录后投票
   发表时间:2004-08-24  
我碰到过这样的问题,具体的原因我也没有去仔细查。
0 请登录后投票
   发表时间:2004-08-24  
http://elab.cn/qyshop/front/browProduct.action

注:此程序在windows 平台上运行正常。。。

为什么在 linux+apache+tomcat 5.18 下会报这种错误,如何解决??

HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet.init() for servlet webwork threw exception
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:324)
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:395)
org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:673)
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:615)
org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:786)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
java.lang.Thread.run(Thread.java:534)


root cause

java.lang.RuntimeException: Unable to instantiate VelocityEngine!
com.opensymphony.webwork.views.velocity.VelocityManager.newVelocityEngine(VelocityManager.java:333)
com.opensymphony.webwork.views.velocity.VelocityManager.init(VelocityManager.java:146)
com.opensymphony.webwork.dispatcher.ServletDispatcher.init(ServletDispatcher.java:170)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:324)
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:395)
org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:673)
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:615)
org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:786)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
java.lang.Thread.run(Thread.java:534)


note The full stack trace of the root cause is available in the Tomcat logs.


--------------------------------------------------------------------------------

Apache Tomcat/5.0.18
0 请登录后投票
   发表时间:2004-08-30  
设置webwork.properties和velocity.properties的
字符集后,页面中文显示正常。但是页面form传递的字符还是乱码。配置了filter,request.setCharacterEncoding("GBK");
response.setContentType("text/html; CHARSET=utf8");
调用后,依然乱码,都是问号。
看到有人说创建WrapServletDispatcher,不知道怎么搞。
0 请登录后投票
   发表时间:2004-08-30  
刚才试了WrapServletDispatcher也不行。
因为很简单,在调用.action之前先调用encodefilter,
而encodefilter就已经显示读取的param全部都是
问号,那么,dispatcher读到的肯定也是问号。
真不知道这个乱码怎么办了
0 请登录后投票
   发表时间:2004-08-31  
打开tomcat的server.xml文件
<Connector port="80" 
maxThreads="150"
minSpareThreads="25"
maxSpareThreads="75"              
enableLookups="false"
redirectPort="8443"
acceptCount="100"              
debug="0"
connectionTimeout="20000"                disableUploadTimeout="true"               
URIEncoding="GBK"/>
找了好多地方,才在j道上找到的
http://www.jdon.com/jive/article.jsp?forum=16&thread=13852[/url][/b]
0 请登录后投票
   发表时间:2004-09-05  
我根本没遇到乱码的问题
webwork.i18n.encoding = GBK
character.encoding=GBK
content.type=text/html;CHARSET=utf8
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics