p:layout 组件在模板客户端中使用时未呈现

发布于 2024-12-19 05:25:42 字数 2329 浏览 1 评论 0原文

我正在使用 JSF 2.0 和 PrimeFaces 2.2.1。在我的 template.xhtml 中,我有一个 ui:insert 组件:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.prime.com.tr/ui">
   <h:head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      <title>A page</title>
   </h:head>

   <h:body>
      <ui:insert name="content"></ui:insert>
   </h:body>
</html>

在使用上述模板的 myPage.xhtml 中,我定义了一个 组件,如下所示:

<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                template="./../template/template.xhtml"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:p="http://primefaces.prime.com.tr/ui"
                xmlns:f="http://java.sun.com/jsf/core">

   <ui:define name="content">
      <p:layout>
         <p:layoutUnit position="center">  
            Center unit
         </p:layoutUnit>

         <p:layoutUnit position="right" collapsible="true">  
            Right unit
         </p:layoutUnit>  
      </p:layout> 
   </ui:define>

</ui:composition>

当我打开 myPage.xhtml 时,我看到“中心单元”和“右侧单元”,但没有看到任何布局呈现。

但是,当我尝试将 组件放入模板内时,如下所示:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.prime.com.tr/ui">
   <h:head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      <title>A page</title>
   </h:head>

   <h:body>
      <p:layout>
         <p:layoutUnit position="center">  
            <ui:insert name="center"></ui:insert>
         </p:layoutUnit>

         <p:layoutUnit position="right" collapsible="true">  
            <ui:insert name="right"></ui:insert>
         </p:layoutUnit>  
      </p:layout> 

   </h:body>
</html>

一切正常。使用第二个模板的任何页面都会按预期呈现组件。

如果有人能告诉我第一个模板我做错了什么,我将非常感激。

I am using JSF 2.0 and PrimeFaces 2.2.1. In my template.xhtml, I have a ui:insert component:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.prime.com.tr/ui">
   <h:head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      <title>A page</title>
   </h:head>

   <h:body>
      <ui:insert name="content"></ui:insert>
   </h:body>
</html>

In myPage.xhtml which uses the above template, I defined a <p:layout> component as following:

<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                template="./../template/template.xhtml"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:p="http://primefaces.prime.com.tr/ui"
                xmlns:f="http://java.sun.com/jsf/core">

   <ui:define name="content">
      <p:layout>
         <p:layoutUnit position="center">  
            Center unit
         </p:layoutUnit>

         <p:layoutUnit position="right" collapsible="true">  
            Right unit
         </p:layoutUnit>  
      </p:layout> 
   </ui:define>

</ui:composition>

When I opened myPage.xhtml, I saw "Center unit" and "Right unit" but I didn't see any layout rendered.

However, when I tried to put the <p:layout> component inside the template as following:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.prime.com.tr/ui">
   <h:head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      <title>A page</title>
   </h:head>

   <h:body>
      <p:layout>
         <p:layoutUnit position="center">  
            <ui:insert name="center"></ui:insert>
         </p:layoutUnit>

         <p:layoutUnit position="right" collapsible="true">  
            <ui:insert name="right"></ui:insert>
         </p:layoutUnit>  
      </p:layout> 

   </h:body>
</html>

everything works perfectly. Any pages that use the 2nd template rendered the component as expected.

I'd be very grateful if someone could tell me what I have done wrong with the 1st template.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冰雪梦之恋 2024-12-26 05:25:43

我不认为可以在 中使用

您可以在 中使用 但是:

<p:layout>
    <p:layoutUnit position="center">
           <ui:insert name="Center unit" />
    </p:layoutUnit>
    <p:layoutUnit position="right" collapsible="true">
           <ui:insert name="Right unit" />
    </p:layoutUnit>
</p:layout>

I don't believe that it is possible to use <p:layout> within <ui:define>.

You can use a <ui:insert> within a <p:layoutUnit> however:

<p:layout>
    <p:layoutUnit position="center">
           <ui:insert name="Center unit" />
    </p:layoutUnit>
    <p:layoutUnit position="right" collapsible="true">
           <ui:insert name="Right unit" />
    </p:layoutUnit>
</p:layout>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文