如何在PrimeFaces layoutUnit中更新表单

时间:2014-02-15 05:10:50

标签: java jsf primefaces

我想使用primeface <p:layout>来创建两个<p:layoutUnit>。用于菜单的西<p:layoutUnit>和用于点击菜单上的项目的中心<p:layoutUnit>。 由于<p:menu>必须包含在<h:form>中,因此我的内容位于中心,因为我需要使用表格来显示数据。所以我的xhtml页面如下所示:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      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">

    <f:view contentType="text/html">
        <h:head>
            <f:facet name="first">
                <meta content='text/html; charset=UTF-8' http-equiv="Content-Type"/>
                <title>PrimeFaces</title>
            </f:facet>
        </h:head>
        <h:body>
            <p:layout fullPage="true">
                <p:layoutUnit position="west" size="175" header="Left" collapsible="true">
                    <p:menu>
                        <p:submenu label="testUpdate">
                            <p:menuitem value="open" id="open" actionListener="#{backingBean.open()}" update=":center_form"/>
                            <p:menuitem value="close" id="close" actionListener="#{backingBean.close()}" update=":center_form"/>
                        </p:submenu>
                    </p:menu>
                </p:layoutUnit>

                <p:layoutUnit position="center">
                    <p:panel id="center_panel" rendered="#{backingBean.render}"> 
                        <h:form id="center_form">
                            testing
                        </h:form>
                    </p:panel>
                </p:layoutUnit>
            </p:layout>
        </h:body>
    </f:view>
</html>

和我的web.xml:

<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
        <context-param>
            <param-name>javax.faces.PROJECT_STAGE</param-name>
            <param-value>Development</param-value>
        </context-param>
        <servlet>
            <servlet-name>Faces Servlet</servlet-name>
            <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>Faces Servlet</servlet-name>
            <url-pattern>/faces/*</url-pattern>
        </servlet-mapping>
        <session-config>
            <session-timeout>
                30
            </session-timeout>
        </session-config>
        <welcome-file-list>
            <welcome-file>faces/index.xhtml</welcome-file>
        </welcome-file-list>
    </web-app>

问题是当我点击“打开”和“关闭”时,ajax似乎无法正常工作,我必须通过手动重新加载页面来更新我的连接以让页面更新。

我可以知道是否可以这样做? 如果是这样,我的代码中有什么问题? 或者当我点击菜单上的项目时,我该怎么办才能让中心layoutUnit自动更新?

1 个答案:

答案 0 :(得分:0)

将此添加到您的web.xml:

 <listener>
    <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class> 
</listener>

尝试update="@all"