【发布时间】:2013-10-05 05:21:28
【问题描述】:
我有一个简单的 xhtml 页面,该页面由来自 Glassfish 4 中托管的 Entity 类的 Netbeans 7.3.1 模板生成。Entity 类仅包含两个字段,一个 ID 和一个 Name。如果我在“名称”字段中写下“café”这个词,那么它会保存“café”。我遵循了互联网上发布的每条建议,但都失败了。它们都没有工作,至少对于 JSF 2.2 没有。
我尝试创建自定义过滤器;使用 Spring 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>
告诉我这个过滤器没有被使用,我在Init方法上放置了一个throw Exception,页面加载和发布正常。
【问题讨论】:
-
@BalusC,您必须停止发布好的 QA 帖子。你能看到你在做什么吗?你说正确答案是错误的,你说我是问题,然后你称我为愚蠢,你更改了一个显示我正在使用的特定 JSF 版本的好帖子标题,最后你发布了一个不起作用的答案对于这个版本的 JSF(我试过没有例外)。你怎么了?如果您愿意,您可以提供新的建议,但取消其他人的工作资格不会让您有任何成就。
-
答案显示了 Glassfish 特定的解决方案,而不是 JSF 特定的解决方案,因此不可移植;我并没有直接当面骂你傻,只是说你从原标题和代码的组合上“看起来”很傻; JSF 版本已经被提及;你没有提到你没有例外地尝试过。我的答案对我有用,否则我没有发布。显然,在你的环境中还有更多的问题。也许您正在使用 PrimeFaces?或者您实际上是在处理 GET 请求而不是 POST 请求?
标签: jsf utf-8 character-encoding facelets servlet-filters