【问题标题】:h:panelGrid renders empty table cellsh:panelGrid 呈现空的表格单元格
【发布时间】:2013-11-19 11:32:54
【问题描述】:

我有以下<h:panelGrid>

   <h:panelGrid columns="2" id="panelGrid" > 
        <!-- heading -->
        <f:facet name="header">
            User Details
        </f:facet>

        <h:outputLabel value="#{bundle.ViewUserdetailsLabel_id}"/>
        <!-- adding in a small effect here that will fade a message when a user hovers over the id number or username -->
        <h:outputLink id="id1" value="#">  
            <h:outputText id="id" value="#{userdetailsController.selected.id}" title="#{bundle.ViewUserdetailsTitle_id}"/> 
        </h:outputLink>                            

        <p:tooltip for="id" value="This is your I.D. Number" showEffect="fade" hideEffect="fade" />
        <h:outputText value="#{bundle.ViewUserdetailsLabel_username}"/>
        <h:outputLink id="username1" value="#">  
            <h:outputText id="username" value="#{userdetailsController.selected.username}" title="#{bundle.ViewUserdetailsTitle_username}"/>
        </h:outputLink>                            
        <p:tooltip for="username" value="Your registered username, this can be changed" showEffect="fade" hideEffect="fade" />

        <f:facet name="footer"></f:facet>  

    </h:panelGrid>

我希望它显示为

用户详情 编号:500 用户名:zzzzzzzz

然而,它却显示了一些空单元格:

用户详情 ID: 500 用户名: zzzzzzzz

当我使用&lt;p:panelGrid&gt; 而不是&lt;h:panelGrid&gt; 时,同样的问题仍然存在。这是怎么引起的,如何解决?

【问题讨论】:

    标签: jsf primefaces panelgrid


    【解决方案1】:

    在面板网格中,每个直接子组件都算作一个表格单元格。

    那些&lt;!-- heading --&gt;&lt;!-- adding ... --&gt; 注释行都算作一个子级。因此,这些也算作一个表格单元格。

    要解决这个问题,只需通过以下web.xml 条目告诉 Facelets 在视图构建期间跳过所有 cmets:

    <context-param>
        <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
        <param-value>true</param-value>
    </context-param>
    

    然后是&lt;p:tooltip&gt;,即使它不代表任何直接内容,它也算作单个表格单元格。您需要将工具提示及其目标组件包装在 &lt;h:panelGroup&gt; 中,以便它表示单个表格单元格(此外,您也可以将注释放在那里)。

    <h:outputLabel value="#{bundle.ViewUserdetailsLabel_id}"/>
    <h:panelGroup>
        <!-- adding in a small effect here that will fade a message when a user hovers over the id number or username -->
        <h:outputLink id="id1" value="#">  
            <h:outputText id="id" value="#{userdetailsController.selected.id}" title="#{bundle.ViewUserdetailsTitle_id}"/> 
        </h:outputLink>                            
        <p:tooltip for="id" value="This is your I.D. Number" showEffect="fade" hideEffect="fade" />
    </h:panelGroup>
    
    <h:outputText value="#{bundle.ViewUserdetailsLabel_username}"/>
    <h:panelGroup>
        <h:outputLink id="username1" value="#">  
            <h:outputText id="username" value="#{userdetailsController.selected.username}" title="#{bundle.ViewUserdetailsTitle_username}"/>
        </h:outputLink>                            
        <p:tooltip for="username" value="Your registered username, this can be changed" showEffect="fade" hideEffect="fade" />
    </h:panelGroup>
    

    【讨论】:

    • 感谢部分解决了它,看起来它也将“
    • 发现解决方案是移动这些,因为对象不需要它们,非常感谢您的帮助:)
    • 忽略了那些工具提示。把它们放在&lt;h:panelGroup&gt;。我更新了答案。请注意,您可以对 cme​​ts 执行相同操作。
    猜你喜欢
    • 1970-01-01
    • 2017-02-01
    • 2011-11-25
    • 2013-05-16
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 2018-12-18
    相关资源
    最近更新 更多