1

我正在编写 jsf Web 应用程序。我在 netbeans 中使用 primefaces 和 glassfish。

当我运行 index.xhtml 时。它没有显示一些primefaces标签(一些显示)

<p:dataTable id="customerTable" var="customerTable" 
   value="#{controller.CustomerJpaController.findCustomerEntities}" 
   paginator="true" rows="10" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
   rowsPerPageTemplate="5,10,15"> 
   <f:facet name="header">Customers</f:facet> 
   <p:column><f:facet name="header"><h:outputText value="Customer#" /></f:facet>   <h:outputText value="#{model.customer.customerid}" /> </p:column>
</p:dataTable>

我收到了这个错误

警告:JSF1087:由于响应已提交,因此无法生成 Facelets 错误页面。严重:javax.faces.FacesException:PWC3999:在提交响应后无法创建会话 javax.faces.FacesException:PWC3999:在 com.sun.faces.context.ExceptionHandlerImpl.handle 提交响应后无法创建会话(ExceptionHandlerImpl.java:142) 在 com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119) 在 com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 在 javax.faces。 webapp.FacesServlet.service(FacesServlet.java:594) 在 org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)在 org.apache.catalina.core.StandardContextValve。

谁能帮我解决这个问题并给我它的原因?

非常感谢

4

1 回答 1

3

嗯,您的标签之一似乎正在尝试设置会话属性,而您还没有会话。

要设置会话属性,应创建会话,并且会话 ID 应位于 HTTP 响应标头中的 cookie 中。但是由于您已经在渲染页面,HTTP 标头已经发送到客户端,因此您无法发送会话 cookie。

在您的情况下, a<p:dataTable paginator="true"..>使用会话属性来跟踪当前页码等。

在呈现输出页面之前,请尝试确保您已经在会话中。例如,通过让用户登录或其他方式。例如,在您的控制器中,执行FacesContext.getCurrentInstance().getExternalContext().getSession(true). 这将在您呈现页面之前创建一个会话。

于 2013-06-03T15:11:26.527 回答