Primefaces - 未使用布局呈现的元素

时间:2014-01-14 16:33:50

标签: jsf layout primefaces

我正在使用PF 4.0,我正在尝试使用模板和对话框。这是我的模板:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<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">
  <h:head></h:head>

  <h:body>  

    <p:growl for="message" id="msg" showDetail="true" />

    <p:layout id="page" fullPage="true">

      <!-- North -->
      <p:layoutUnit position="north" size="150px" style="border: none !important">
        <h:form id="menutoolbar">
        <p:toolbar>  
          [...]
        </p:toolbar>
        </h:form>
      </p:layoutUnit>

      <!-- Center -->
      <p:layoutUnit position="center" style="border: none !important">
        <ui:insert name="content">Center of page</ui:insert>
      </p:layoutUnit>

      <!-- South -->
      <p:layoutUnit position="south" collapsible="false" gutter="0">
        <ui:insert name="status"></ui:insert>
      </p:layoutUnit>

    </p:layout>

  </h:body> 

</html>  

我正在使用该模板渲染另一页:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<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">
  <h:head></h:head>

  <h:body>  

    <f:metadata>
      <f:viewParam name="id_file" value="#{csvDetalleBean.idFile}" />
    </f:metadata>

    <ui:composition template="./baseTemplate.xhtml">

      <ui:define name="content">
        <h:form id="tableform" prependId="false">              
          <p:dataTable id="detalle" value="#{csvDetalleBean.tableModel}" var="row" selection="#{csvDetalleBean.selectedRows}">
            [...columns definition...]
          </p:dataTable>
        </h:form>
      </ui:define>        

      <ui:define name="status">
        <h:form id="statusform">
          <p:panel id="panel" header="Status" style="margin-bottom:10px;">
            [...controls definitions...]
          </p:panel>  
          <p:poll interval="20" async="true" update="panel" />
        </h:form>
      </ui:define>

      <p:dialog header="Dialog" widgetVar="respuestasDialog" resizable="false" appendToBody="true">  
          <p:dataTable id="respuestas" value="#{transactions.rows}" var="trRow">
            <p:column headerText="Confirmation number">  
              <h:outputText value="#{trRow.get('confirmation_nm')}" /> hola
            </p:column>  
          </p:dataTable>
      </p:dialog>  

    </ui:composition>      

  </h:body>
</html>

关键是我无法显示对话框,因为它根本没有渲染。我认为关键是组合标签,我已经尝试将对话框放在组合之外,结果相同。 将组件放在布局之外的正确方法是什么?当然不想把对话框放在模板里面。 非常感谢你!

0 个答案:

没有答案