Jsf 2.2 JSF 2.2 h:selectOneMenu验证错误。基于非英语字符?

Jsf 2.2 JSF 2.2 h:selectOneMenu验证错误。基于非英语字符?,jsf-2.2,glassfish-4,Jsf 2.2,Glassfish 4,我的jsf facelets Web应用程序使用h:selectonemenu,该菜单由mysql数据库填充,名称由英文和泰文字符编写 部署在glassfish-3.1.2.2JSF2.1上,完全没有问题 部署在glassfish-4.0 jsf 2.2 EE7上, 如果选择的名称为泰语英语名称,则没有问题, 我得到的验证错误值无效 在谷歌搜索了几个小时后,我找不到任何解决这个问题的方法。 似乎只有我一个人有这个问题 出于调试原因,我在.xhtml中添加了一个自定义转换器: 在支持Bean中,有

我的jsf facelets Web应用程序使用h:selectonemenu,该菜单由mysql数据库填充,名称由英文和泰文字符编写

部署在glassfish-3.1.2.2JSF2.1上,完全没有问题

部署在glassfish-4.0 jsf 2.2 EE7上, 如果选择的名称为泰语英语名称,则没有问题, 我得到的验证错误值无效

在谷歌搜索了几个小时后,我找不到任何解决这个问题的方法。 似乎只有我一个人有这个问题

出于调试原因,我在.xhtml中添加了一个自定义转换器:

在支持Bean中,有一个System.out.println:

字符串submittedValue=值; System.out.printlnconverter值:+submittedValue

从服务器3.1.2.2日志文件中,我得到:

[| 2014-02-18T01:45:16.184+0800 | INFO | glassfish3.1.2 | javax.enterprise.system.std.com.sun.enterprise.server.logging | u ThreadID=125;_ThreadName=Thread-2;|转换器值:A-117,บริษัท โมเดอร์นฟู้ด อินดัสตรี้ จํากัด|]

从服务器4.0日志文件中,我得到:

[2014-02-17T19:13:47.055+0800][glassfish 4.0][INFO][][]tid:_ThreadID=18 _ThreadName=Thread-3][timeMillis:1392635627055][levelValue:800][[ “A/767777A”A/807777A”A767777该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该该、À̧À̧3à̧À̧A±À̧]]

这将导致值无效

我想,我确实错过了一个与字符编码相关的设置


非常感谢您的帮助。谢谢。

我添加了上述zConverter:

if(submittedValue.contains("à")){
    try {
        submittedValue = new String (value.getBytes ("iso-8859-1"), "utf-8");


} catch (UnsupportedEncodingException ex) {
        Logger.getLogger(zConverter.class.getName()).log(Level.SEVERE, null, ex);
    }
   }
因为只有在第一次调用验证时,编码才是错误的。 后来,就没有问题了

不管怎样,对我来说,它现在起作用了

问候

if(submittedValue.contains("à")){
    try {
        submittedValue = new String (value.getBytes ("iso-8859-1"), "utf-8");


} catch (UnsupportedEncodingException ex) {
        Logger.getLogger(zConverter.class.getName()).log(Level.SEVERE, null, ex);
    }
   }