我正在尝试将示例从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配置引起的吗?
JSF / Facelets默认情况下已经使用UTF-8(在还原视图期间进行设置),但是PrimeFaces ajax视图处理程序会在还原视图之前尝试访问请求参数,因此将使用服务器的默认字符编码(ISO- 8859-1。您需要将以下条目添加到<glassfish-web-app>您的/WEB-INF/glassfish-web.xml文件,以指示GlassFish服务器使用UTF-8,以及:
<glassfish-web-app>
/WEB-INF/glassfish-web.xml
<parameter-encoding default-charset="UTF-8"/>