Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Jboss上对JSF2使用ISO-8859-1编码_Jsf_Jsf 2_Character Encoding_Jboss_Mojarra - Fatal编程技术网

在Jboss上对JSF2使用ISO-8859-1编码

在Jboss上对JSF2使用ISO-8859-1编码,jsf,jsf-2,character-encoding,jboss,mojarra,Jsf,Jsf 2,Character Encoding,Jboss,Mojarra,我有一个JSP页面,它使用以下指令: <%@page contentType="text/html; charset=iso-8859-1" pageEncoding="iso-8859-1"%> 因此,页面中的表单使用ISO-8859-1编码发送,bean接收(在setXXX()方法中)根据此格式编码的字符串 我想将JSP“翻译”成JSF2,JSF2默认使用UTF-8。如何强制JSF使用ISO-8859-1,从而模拟page指令 我在JBoss6上使用Mojarra+rich

我有一个JSP页面,它使用以下指令:

<%@page contentType="text/html; charset=iso-8859-1" pageEncoding="iso-8859-1"%>

因此,页面中的表单使用ISO-8859-1编码发送,bean接收(在setXXX()方法中)根据此格式编码的字符串

我想将JSP“翻译”成JSF2,JSF2默认使用UTF-8。如何强制JSF使用ISO-8859-1,从而模拟page指令

我在JBoss6上使用Mojarra+richfaces


谢谢大家!

设置的
编码属性




然而,现在不再推荐使用非Unicode编码。您的Web应用程序还没有准备好统治世界,并且当最终用户尝试发送Unicode编码的数据时(例如希伯来文、西里尔文、中文等),您将面临风险。

设置应用程序的
编码属性




然而,现在不再推荐使用非Unicode编码。您的Web应用程序还没有准备好成为世界霸主,而且当最终用户尝试发送Unicode编码的数据时(例如希伯来文、西里尔文、中文等),您将面临风险。

我并不真正理解这个问题,但这让我在使用UTF-8而不是ISO-8859-1时避免了Mojibake:

public class EncodingFilter implements Filter {

    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
        if (req.getCharacterEncoding() == null) {
            req.setCharacterEncoding("UTF-8");
        }
        chain.doFilter(req, resp);
    }

    @Override
    public void destroy() {
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
}

奇怪的是,没有这个过滤器,我得到了mojibake,尽管我没有指定任何类型的编码。我还注意到init()方法中的(filterConfig.getInitParameter(“encoding”))总是返回null。

我并不真正理解这个问题,但这让我在使用UTF-8而不是ISO-8859-1时避免了Mojibake:

public class EncodingFilter implements Filter {

    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
        if (req.getCharacterEncoding() == null) {
            req.setCharacterEncoding("UTF-8");
        }
        chain.doFilter(req, resp);
    }

    @Override
    public void destroy() {
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
}

奇怪的是,没有这个过滤器,我得到了mojibake,尽管我没有指定任何类型的编码。我还注意到init()方法中的(filterConfig.getInitParameter(“encoding”))总是返回null。

Hi-BalusC,感谢您的回答!f:view(我试图将其直接放在html和h:body之后的模板中)似乎没有任何帮助:Firebug继续显示HTTP头的“Content-Type:text/html;charset=UTF-8”。。我错过什么了吗?很明显,它已经被其他地方覆盖了。在
FaceletViewHandlingStrategy#createResponseWriter()
处开始调试。我怀疑
RenderKit
没有考虑视图设置的编码。也许RichFaces是具体的?我按照下面的描述解决了这个问题,但我并不了解问题是什么。。正如您在这里所说的:,UTF-8是默认值,使用ISO-8859-1没有意义。尽管如此,我的豆子还是收到了熏制的德语字符。通过明确设置请求的字符编码,我解决了这个问题。。奇怪,不是吗?嗨,巴卢斯克,谢谢你的回答!f:view(我试图将其直接放在html和h:body之后的模板中)似乎没有任何帮助:Firebug继续显示HTTP头的“Content-Type:text/html;charset=UTF-8”。。我错过什么了吗?很明显,它已经被其他地方覆盖了。在
FaceletViewHandlingStrategy#createResponseWriter()
处开始调试。我怀疑
RenderKit
没有考虑视图设置的编码。也许RichFaces是具体的?我按照下面的描述解决了这个问题,但我并不了解问题是什么。。正如您在这里所说的:,UTF-8是默认值,使用ISO-8859-1没有意义。尽管如此,我的豆子还是收到了熏制的德语字符。通过明确设置请求的字符编码,我解决了这个问题。。奇怪,不是吗?