【问题标题】:Primefaces responsive <p:panelGrid> not working with 5 columnsPrimefaces 响应 <p:panelGrid> 不适用于 5 列
【发布时间】:2017-01-26 14:31:42
【问题描述】:

让我们有一些简单的响应式primefaces &lt;p:panelGrid&gt; 2、3、4、5 和 6 列(仅作为示例)

 ...
<p:panelGrid columns="4" layout="grid">
   <h:outputText value="Column"/>
   <h:outputText value="Column"/>
   <h:outputText value="Column"/>
   <h:outputText value="Column"/>
</p:panelGrid>

<p:panelGrid columns="5" layout="grid">
   <h:outputText value="Column"/>
   <h:outputText value="Column"/>
   <h:outputText value="Column"/>
   <h:outputText value="Column"/>
   <h:outputText value="Column"/>
</p:panelGrid>

<p:panelGrid columns="6" layout="grid">
   <h:outputText value="Column"/>
   <h:outputText value="Column"/>
   <h:outputText value="Column"/>
   <h:outputText value="Column"/>
   <h:outputText value="Column"/>
   <h:outputText value="Column"/>
</p:panelGrid>
...

可能我遗漏了一些东西……但不知何故,特定 5 列 panelGrid 的响应无法正常工作。

这是截图:

看html,好像是primefaces在有5列的时候没有添加ui-grid-col类(而是添加null)。

有什么想法吗?也许是一个 primefaces 错误或我遗漏了什么?

感谢您的帮助。

【问题讨论】:

    标签: java jsf primefaces jsf-2 responsive


    【解决方案1】:

    基本的 Primefaces Grid CSS (http://www.primefaces.org/showcase/ui/panel/grid.xhtml) 由 12 列组成,可以组合在一起:

    2 列布局 -> 12 / 2 --> 6 + 6 (=12)

    3 列布局 -> 12 / 3 --> 4 + 4 + 4 (=12)

    4 列布局 -> 12 / 4 --> 3 + 3 + 3 + 3 (=12)

    5 列布局 -> 12 / 5 = 2.4(没有整数值!)

    因此 Primefaces 无法呈现 5 列布局。但看起来很奇怪,它呈现的是 nullvalue 而不是空字符串。

    查看org.primefaces.component.panelgrid.GridLayoutUtilsclass 你可以看到允许的值:

    private static final Map<Integer, String> COLUMN_MAP = new HashMap();
    
    private GridLayoutUtils() {
    }
    
    public static String getColumnClass(int columns) {
        return (String)COLUMN_MAP.get(Integer.valueOf(columns));
    }
    
    static {
        COLUMN_MAP.put(Integer.valueOf(1), "ui-grid-col-12");
        COLUMN_MAP.put(Integer.valueOf(2), "ui-grid-col-6");
        COLUMN_MAP.put(Integer.valueOf(3), "ui-grid-col-4");
        COLUMN_MAP.put(Integer.valueOf(4), "ui-grid-col-3");
        COLUMN_MAP.put(Integer.valueOf(6), "ui-grid-col-2");
        COLUMN_MAP.put(Integer.valueOf(12), "ui-grid-col-1");
    }
    

    因此您可以使用以下值:1、2、3、4、6、12

    【讨论】:

    • 感谢您的回答!
    • “开源”的优势。感谢您的发现。也许应该创建一个 github 问题来说明这一点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多