运行ECM的过程中发现不能输入中文,比如新建用户的中文姓名显示成乱码。看了一下论坛,找到了一个权宜的解决方案,即配置一个处理中文编码的过滤器EncodingFilter。
EncodingFilter.java:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
public class EncodingFilter implements Filter{
private FilterConfig config = null;
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException{
if (request instanceof HttpServletRequest){
HttpServletRequest httpreq = (HttpServletRequest) request;
try{
request.setCharacterEncoding("UTF-8");
}catch (Exception e){
config.getServletContext().log("Error setting UTF8 encoding : " + e.getMessage());
}
}
// Perform any other filters that are chained after this one.
// This includes calling the requested servlet!
chain.doFilter(request, response);
}
public void destroy() {
}
public void init(FilterConfig filterConfig) {
this.config = filterConfig;
}
}
在exo-tomcat/conf/web.xml中配置此过滤器:
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
配置完成后发现表单提交的中文字符显示正确。但是在ecm portlet中,中文目录或文件名仍然有问题,要么显示错误,要么打不开,到现在还没有找到解决方案。