在提交响应后无法创建会话....为什么?

时间:2011-12-08 04:22:35

标签: jsf jsf-2 facelets

<?xml version='1.0' encoding='UTF-8' ?>

             Facelet标题                                

            <f:facet name="header">Books And Authors....</f:facet>
            <h:panelGrid columns="2" rules="cols">



                <h:panelGrid id="pan1" columns="2">

                    <h:outputText value="Select Author"/>
                    <p:selectOneMenu value="#{bean.selectedAuthor}" converter="authorConverter">

                        <f:selectItems value="#{bean.authors}" var="author"
                                       itemLabel="#{author.name}" itemValue="#{author}"/>
                    </p:selectOneMenu>
                    <h:outputText value="Select Books"/>
                    <p:selectManyMenu value="#{bean.selectedBook}" converter="bookConverter">
                        <f:selectItems value="#{bean.books}" var="books"
                                       itemLabel="#{books.name}" itemValue="#{books}"/>
                    </p:selectManyMenu>
                    <p:commandButton value="Add" process="@form:pan1" update="@form:pan1" action="#{bean.add}" />
                </h:panelGrid>

                <h:panelGrid id="pan2" columns="2">
                    <h:outputText value="Enter Book name:"/>
                    <p:inputText value="#{bean.name}"/>

                    <p:commandButton value="Search" process="@form:pan2" update="@form:pan2" action="#{bean.search}"/>
                    <p:commandButton value="Inner Join" process="@form:pan2" update="@form:pan2" action="#{bean.innerJoin}"/>
                    <p:commandButton value="Outer Join" process="@form:pan2" update="@form:pan2" action="#{bean.outerJoin}"/>
                    <p:commandButton value="Fetch Join" process="@form:pan2" update="@form:pan2" action="#{bean.fetchJoin}"/>
                    <p:dataTable value="#{bean.results}" var="authors">

                        <p:column>
                            <f:facet name="header">Author Name</f:facet>
                            #{authors.name}
                        </p:column>
                        <p:column>
                            <f:facet name="header">Book Name</f:facet>
                            <p:dataTable value="#{authors.books}" var="book">
                                <p:column>
                                  #{book.name}
                                </p:column>
                            </p:dataTable>
                        </p:column>
                    </p:dataTable>
                </h:panelGrid>

            </h:panelGrid>
        </p:panel>
    </h:form>
</h:body>

  

警告:JSF1087:由于响应已提交,因此无法生成Facelets错误页面。   严重:javax.faces.FacesException:PWC3999:提交响应后无法创建会话

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

为了创建会话,您(几乎总是)需要设置会话cookie。当响应已经提交时(即HTTP头已经发送到客户端),这是不可能的。在这种情况下,似乎Facelets内部需要一个会话。

  

我该如何解决这个问题?

在代码中创建一个会话。您不必输入任何会话属性,只需确保会话存在。