hibernate - JSF <h :inputText/> character encoding issue

标签 hibernate jsf primefaces utf-8 character-encoding

我在这个主题上通过了许多“谷歌”,但没有任何帮助。
问题是,我在每个可以拥有(甚至不能拥有)的地方都设置了 UTF-8 编码,但是从 inputText 检索的数据仍然损坏。
我使用 JSF、Primefaces 和 Hibernate。
当我发布到页面时,它会从 DB 正确呈现,在 html doc 中写为纯文本,甚至是 bean 答案。

<h:outputText value="text cez OT: čerstvejší"/><br/>
text cez IDE: čerstvejší<br/><br/>

<h:outputText value="text cez OT_beans: #{temp.dia}"/><br/>
text cez IDE_beans: #{temp.dia}<br/><br/>

<h:outputText value="text cez OT_DBS: #{temp.getDBS()}"/><br/>
text cez IDE_DBS: #{temp.getDBS()}<br/>

另外,当我将变量的 setter 设置为此:
public String getName() {
    return "načítané z aplikácie";
}

它正确呈现。
只有当我从页面发布任何“ľščťžýáíé”字符时,它才会损坏为Ä?和常见的字符。
它在 NetBeans 管理的 Appache Tomcat 7.0.34 上运行,带有 CDI、JSF 2.2、Primefaces 3.5、Hibernate 3.2.5。
UTF-8 编码集的地方:
  • meta http-equiv="Content-Type"content="text/html; charset=utf-8"/> 在每个标题
  • 连接器端口="8080"
    协议(protocol)="HTTP/1.1"
    连接超时="20000"
    重定向端口="8443"
    URIEncoding="UTF-8"/> 和连接器 port="8009"protocol="AJP/1.3"redirectPort="8443"URIEncoding="UTF-8"/> 在 Appache 服务器上
  • f:view encoding="UTF-8"contentType="text/html">
  • 我也有 webFilter,但没有帮助:

    @覆盖
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    request.setCharacterEncoding(编码);
    response.setCharacterEncoding(编码);
    链.doFilter(请求,响应);
    }

  • 有什么帮助吗?其他问题?谢谢!`在此处输入代码

    最佳答案

    问题是,在 Tomcat 7 上使用 CDI 需要 org.jboss.weld.environment.servlet.Listener它使用不同的编码(我认为)。解决方法是配置org.apache.catalina.filters.SetCharacterEncodingFilterorg.jboss.weld.servlet.ConversationFilter在焊接监听器之前。

    <filter>
        <filter-name>SetCharacterEncoding</filter-name>  
        <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>  
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>ignore</param-name>  
            <param-value>false</param-value>  
        </init-param>
    </filter>
    <filter>
        <filter-name>Conversation</filter-name>  
        <filter-class>org.jboss.weld.servlet.ConversationFilter</filter-class>        
    </filter>
    <filter-mapping>
        <filter-name>SetCharacterEncoding</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>
    <filter-mapping>
        <filter-name>Conversation</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>
    

    关于hibernate - JSF <h :inputText/> character encoding issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19908447/

    相关文章:

    java - 当用户具有多个角色时,Hibernate 会获得两次值(value)

    java - Hibernate 在 cfg.buildSessionFactory() 处突然挂起

    java - hibernate-memcached 统计

    AngularJS 表达式在带有 JSF 的 ng-src 中无法正常工作

    jsf - 如何制作 PrimeFaces 选项卡 "linkable"?

    java - Hibernate Table 未找到、MappingException 和 AssertionException

    jsf - 通过 'Referer' header 防止跨站点请求伪造

    java - 如何下载 PrimeFaces showcase?

    jquery - 在使用 rowEditor 的 Primefaces 中禁用数据表中的删除按钮

    ajax - JSF f :ajax cannot locate component on context