Вопрос по jsf, jsf-2, java, primefaces – Невозможно установить кодировку символа запроса в UTF-8 из контекста [дубликат]

6

This question already has an answer here:

Я пытаюсь реализовать пример из Primefaces в WAB-пакет.

    <?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);
    }
}

Когда я пытаюсь получить доступ к странице JSF, страница пуста. Я получаю эту ошибку в файле журнала Glassfish:

[#|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|#]

Как я могу решить эту проблему? Я полагаю, что это может быть вызвано конфигурацией POM?

Извините, моя ошибка. user1285928
Ваша новая проблема совершенно другая. Пожалуйста, не используйте существующий вопрос для этой проблемы. НажмитеAsk Question создать новый вопрос для этого. Я думаю, что рабочий каталог Glassfish просто грязный, и вам просто нужна полная очистка / восстановление. BalusC

Ваш Ответ

1   ответ
25

JSF / Facelets по умолчанию уже использует UTF-8, который устанавливается во время восстановления представления, однако обработчик представления ajax PrimeFaces пытается получить доступ к параметру запроса до восстановления представления, поэтому вместо него будет использоваться кодировка символов по умолчанию сервера, которая ISO-8859-1. Вам необходимо добавить следующую запись в<glassfish-web-app> вашей/WEB-INF/glassfish-web.xml файл, который инструктирует сервер Glassfish также использовать UTF-8:

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

See also:

Похожие вопросы