Unable to set request character encoding to UTF-8 from context

23,209

JSF/Facelets uses UTF-8 by default already which get set during restoring the view, however the PrimeFaces ajax view handler tries to access a request parameter before the view get restored, so the server's default character encoding will be used instead which is ISO-8859-1. You need to add the following entry to the <glassfish-web-app> of your /WEB-INF/glassfish-web.xml file to instruct the Glassfish server to use UTF-8 as well:

<parameter-encoding default-charset="UTF-8"/>

See also:

Share:
23,209
user1285928
Author by

user1285928

Updated on July 27, 2022

Comments

  • user1285928
    user1285928 almost 2 years

    I'm trying to implement example from Primefaces into WAB package.

        <?xml version='1.0' encoding='UTF-8' ?>
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"    
              xmlns:h="http://java.sun.com/jsf/html"
              xmlns:f="http://java.sun.com/jsf/core"
              xmlns:ui="http://java.sun.com/jsf/facelets"
              xmlns:p="http://primefaces.org/ui"  >
            <h:head>
                <ui:insert name="header">           
                    <ui:include src="header.xhtml"/>         
                </ui:insert>
            </h:head>
            <h:body>
    
                <h1><img src="resources/css/images/icon.png" alt="NVIDIA.com" /> History Center</h1>
                <!-- layer for black background of the buttons -->
                <div id="toolbar" style="margin: 0 auto; width:1180px; height:30px; position:relative;  background-color:black">
                    <!-- Include page Navigation -->
                    <ui:insert name="Navigation">           
                        <ui:include src="Navigation.xhtml"/>         
                    </ui:insert>
    
                </div>  
    
                <div id="logodiv" style="position:relative; top:35px; left:0px;"> 
                    <h:graphicImage alt="Demo edit form"  style="position:relative; top:-20px; left:9px;"  value="resources/images/logo_linuxz.png" />
                </div>
                <div id="main" style="margin: 0 auto; width:1190px; height:700px; position:absolute;  background-color:transparent; top:105px">
    
                    <div id="mainpage" style="margin: 0 auto; width:1190px; height:500px; position:absolute;  background-color:transparent; top:80px">
    
                        <div id="settingsHashMap" style="width:350px; height:400px; position:absolute;  background-color:r; top:20px; left:1px">
                            <h:form id="test">
    
                                <p:barChart id="basic" value="#{LinuxController.categoryModel}" legendPosition="ne"
                                            title="Basic Bar Chart" min="0" max="200" style="height:300px"/>
    
                                <p:barChart id="horizontal" value="#{LinuxController.categoryModel}" legendPosition="se" style="height:300px"
                                            title="Horizontal Bar Chart" orientation="horizontal" min="0" max="200"/>
    
                                <p:barChart id="stacked" value="#{LinuxController.categoryModel}" legendPosition="ne" style="height:300px"
                                            title="Stacked Bar Chart" stacked="true" barMargin="50" min="0" max="300"/>
    
    
                            </h:form>
    
    
                        </div>   
    
                    </div>  
                </div>
    
            </h:body>
        </html>
    
    import org.glassfish.osgicdi.OSGiService;
    import org.primefaces.model.chart.CartesianChartModel;
    import org.primefaces.model.chart.ChartSeries;
    
    // Update form example
    @Named("LinuxController")
    @SessionScoped
    public class Linux implements Serializable {
    
        private CartesianChartModel categoryModel;
    
        public Linux() {
            createCategoryModel();
    
        }
    
        public CartesianChartModel getCategoryModel() {
            return categoryModel;
        }
    
        private void createCategoryModel() {
            categoryModel = new CartesianChartModel();
    
            ChartSeries boys = new ChartSeries();
            boys.setLabel("Boys");
    
            boys.set("2004", 120);
            boys.set("2005", 100);
            boys.set("2006", 44);
            boys.set("2007", 150);
            boys.set("2008", 25);
    
            ChartSeries girls = new ChartSeries();
            girls.setLabel("Girls");
    
            girls.set("2004", 52);
            girls.set("2005", 60);
            girls.set("2006", 110);
            girls.set("2007", 135);
            girls.set("2008", 120);
    
            categoryModel.addSeries(boys);
            categoryModel.addSeries(girls);
        }
    }
    

    When I try to access the JSF page the page is empty. I get this error in Glassfish log file:

    [#|2012-06-06T20:53:47.931+0300|WARNING|glassfish3.1.2|org.apache.catalina.connector.Request|_ThreadID=321;_ThreadName=Thread-2;|PWC4011: Unable to set request character encoding to UTF-8 from context /test, because request parameters have already been read, or ServletRequest.getReader() has already been called|#]
    
    [#|2012-06-06T20:53:48.880+0300|WARNING|glassfish3.1.2|org.apache.catalina.connector.Request|_ThreadID=323;_ThreadName=Thread-2;|PWC4011: Unable to set request character encoding to UTF-8 from context /test, because request parameters have already been read, or ServletRequest.getReader() has already been called|#]
    
    [#|2012-06-06T20:53:52.714+0300|WARNING|glassfish3.1.2|org.apache.catalina.connector.Request|_ThreadID=321;_ThreadName=Thread-2;|PWC4011: Unable to set request character encoding to UTF-8 from context /test, because request parameters have already been read, or ServletRequest.getReader() has already been called|#]
    
    [#|2012-06-06T20:53:56.434+0300|WARNING|glassfish3.1.2|org.apache.catalina.connector.Request|_ThreadID=324;_ThreadName=Thread-2;|PWC4011: Unable to set request character encoding to UTF-8 from context /test, because request parameters have already been read, or ServletRequest.getReader() has already been called|#]
    
    [#|2012-06-06T20:53:57.591+0300|WARNING|glassfish3.1.2|org.apache.catalina.connector.Request|_ThreadID=322;_ThreadName=Thread-2;|PWC4011: Unable to set request character encoding to UTF-8 from context /test, because request parameters have already been read, or ServletRequest.getReader() has already been called|#]
    
    [#|2012-06-06T20:54:25.828+0300|WARNING|glassfish3.1.2|org.apache.catalina.connector.Request|_ThreadID=323;_ThreadName=Thread-2;|PWC4011: Unable to set request character encoding to UTF-8 from context /test, because request parameters have already been read, or ServletRequest.getReader() has already been called|#]
    
    [#|2012-06-06T20:54:26.912+0300|WARNING|glassfish3.1.2|org.apache.catalina.connector.Request|_ThreadID=321;_ThreadName=Thread-2;|PWC4011: Unable to set request character encoding to UTF-8 from context /test, because request parameters have already been read, or ServletRequest.getReader() has already been called|#]
    
    [#|2012-06-06T20:54:28.010+0300|WARNING|glassfish3.1.2|org.apache.catalina.connector.Request|_ThreadID=324;_ThreadName=Thread-2;|PWC4011: Unable to set request character encoding to UTF-8 from context /test, because request parameters have already been read, or ServletRequest.getReader() has already been called|#]
    

    How I can fix this problem? I suppose that this maybe caused by POM configuration?