我有一个简单的 xhtml 页面,由来自 Glassfish 4 中托管的 Entity 类的 Netbeans 7.3.1 模板生成。Entity 类仅包含两个字段, anID
和 a Name
。如果我在“名称”字段中写下“ café
”,那么它会保存“café
”。我遵循了互联网上发布的每条建议,但都失败了。它们都不起作用,至少对于 JSF 2.2 不起作用。
我尝试创建自定义过滤器;使用弹簧CharacterEncodingFilter
过滤器,标题都包含 charset->UTF-8。我用 Firebug 检查了页面的字符集,它说的是 UTF-8。
我的想法不多了。有人有吗?
顺便说一句,同一个网站项目包含一个 RESTful Web 服务,并且该 Web 服务完美地保存了相同的实体和相同的值 ( café
)。所以,这让我得出结论,问题出在 Facelets 上,但在哪里呢?
我正在使用这个过滤器:
public class CharacterEncodingFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void destroy() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
和web.xml
:
<filter>
<filter-name>UTFEncodingFilter</filter-name>
<filter-class>filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UTFEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
有些东西告诉我这个过滤器没有被使用,我放置了一个throw Exception
onInit
方法,页面加载和发布正常。