- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Primefaces 3.5 中的 p:dataTable
以及延迟加载和动态列。
我有三种类型的列,区别在于过滤的输入。一个有 p:inputText
,一个有 p:selectCheckboxMenu
,最后一个什么都没有。
列通过 c:foreach
标签呈现。
<c:forEach var="col" items="#{cc.attrs.bean.sortedModelColumns}">
一切正常,但不是“懒惰”。我还有 p:tabView
,其中每个选项卡都包含此数据表,并且对于每个请求,所有 bean 都已初始化。我知道,c:forEach
正在构建时进行评估,因此它在 tabView 之前。
因此,我的问题是:如何在 p:dataTable
中呈现不同的列?
我试过 ui:repeat
如下:
<p:dataTable 'datatableDefinition' />
<ui:repeat var="#col" value="#{cc.attrs.bean.sortedModelColumns}">
columnsRendering
</ui:repeat>
</p:dataTable>
但这将是一个空的数据表。当我将 ui:repeat
放在 p:dataTable
之外时,它起作用了。
我也试过 p:columns
它渲染一切都很好,但是用于过滤 p:inputText
<p:ajax event="keyup" listener="#{cc.attrs.bean.filterListener}" />
不工作。
我想,我有两个选择。首先:使 p:columns 以某种方式工作或尝试在 p:tabView
中使用 c:if
,但我不知道如何触发评估 中的测试c:if
选项卡切换事件。
无论如何,我很乐意提供任何帮助。
编辑:数据表的完整代码
<p:dataTable widgetVar="entityTable" var="entity" value="# {cc.attrs.bean.loadEntities(cc.attrs.groupId)}"
resizableColumns="true" lazy="true"
rowStyleClass="#{entity.updated ? 'updatedRow' : ''}"
paginator="true" rows="10"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,20" paginatorPosition="bottom"
scrollable="true" scrollWidth="#{userSessionBean.windowWidth -35}">
<p:ajax event="colReorder" listener="#{cc.attrs.bean.onReorder}" />
<p:ajax event="sort" listener="#{cc.attrs.bean.sortListener}" />
<p:column style="width:20px" >
<f:facet name="header">
<p:selectBooleanCheckbox value="#{cc.attrs.bean.checkbox}">
<p:ajax onstart="return selectAll('#{component.clientId}');"/>
</p:selectBooleanCheckbox>
</f:facet>-->
<p:selectBooleanCheckbox value="#{cc.attrs.bean.checkbox}" styleClass="entitySelectCheckbox">
<p:ajax listener="#{cc.attrs.bean.onEntitySelected(entity.id)}"/>
</p:selectBooleanCheckbox>
<p:commandLink id="notifIcon" styleClass=" #{entity.notification?'notification':''}" />
</p:column>
<p:column style="width:13px" rendered="#{not empty cc.attrs.subview}">
<p:commandLink process="@this" value=" " id="loadEntity" styleClass="loadEntity"
immediate="true" onstart="hideRows('#{component.clientId}');" actionListener="#{cc.attrs.bean.setSelectedRowId(component.clientId)}" action="#{cc.attrs.bean.selectEntity(entity.id)}"
update="@(##{pe:escapeSelector(cc.clientId)}\\\\:entityTableForm)"/>
</p:column>
<p:columns var="col" value="#{cc.attrs.bean.sortedModelColumns}">
<f:attribute name="property" value="#{col.property}" />
<f:facet name="header">
<div style="width: #{col.width}">
#{col.header}
</div>
<p:outputPanel rendered="#{not cc.attrs.bean.isColDate(col.property)}" >
<p:inputText id="#{col.property}Id" styleClass="filterInput" rendered="#{not cc.attrs.bean.isColEnum(col.property) and not cc.attrs.bean.isColVisual(col.property)}" size="10" onkeyup="delay(function(){entityTable.filter();console.log('x');}, 500 );" >
<p:ajax event="keyup" listener="#{cc.attrs.bean.filterListener}" />
<f:attribute name="property" value="#{col.property}" />
<f:attribute name="operator" value="#{col.operator}" />
<f:event id="filterEvent" type="javax.faces.event.PreRenderComponentEvent" listener="#{cc.attrs.bean.filterRendered}"/>
</p:inputText>
<p:selectCheckboxMenu rendered="#{cc.attrs.bean.isColEnum(col.property)}" label="Choose" styleClass="filterInput">
<f:attribute name="property" value="#{col.property}" />
<f:selectItems value="#{cc.attrs.bean.getEnumStrings(col.property)}" var="item" />
<p:ajax event="change" listener="#{cc.attrs.bean.onEnumFilterChange}" oncomplete="setTimeout('entityTable.filter()',200);"/>
</p:selectCheckboxMenu>
</p:outputPanel>
<p:outputPanel rendered="#{cc.attrs.bean.isColDate(col.property)}" >
<p:calendar pattern="#{userSessionBean.person.settings.timeFormat}" styleClass="filterInput filterInputDate">
<f:attribute name="property" value="#{col.property}" />
<f:attribute name="operator" value=">=" />
<p:ajax event="dateSelect" listener="#{cc.attrs.bean.onDateFilterChange}" oncomplete="setTimeout('entityTable.filter()',200);" />
</p:calendar>
<p:calendar pattern="#{userSessionBean.person.settings.timeFormat}" styleClass="filterInput filterInputDate">
<f:attribute name="property" value="#{col.property}" />
<f:attribute name="operator" value="<=" />
<p:ajax event="dateSelect" listener="#{cc.attrs.bean.onDateFilterChange}" oncomplete="setTimeout('entityTable.filter()',200);" />
</p:calendar>
</p:outputPanel>
</f:facet>
<p:outputPanel rendered="#{not cc.attrs.bean.isColDate(col.property)}">
<p:outputPanel rendered="#{not cc.attrs.bean.isColVisual(col.property)}">
<h:outputText rendered="#{empty col.chainedProperty}"
value="#{entity[col.property]}" />
<h:outputText rendered="#{not empty col.chainedProperty}"
value="#{entity[col.primaryProperty][col.chainedProperty]}" />
<h:outputText rendered="#{not empty col.middleProperty}"
value="#{entity[col.primaryProperty][col.middleProperty][col.chainedProperty]}" />
</p:outputPanel>
</p:outputPanel>
<kwe:inlineprogress status="#{entity.status}" rendered="#{cc.attrs.bean.isColVisual(col.property)}" />
<h:outputText rendered="#{cc.attrs.bean.isColDate(col.property)}" value="#{cc.attrs.bean.dateTimeDisplay(entity[col.property])}"/>
</p:columns>
<f:event id="event2" type="javax.faces.event.PreRenderComponentEvent" listener="#{cc.attrs.bean.allRendered}"/>
</p:dataTable>
最佳答案
您不能在 p:dataTable 中使用 ui:repeat 或 c:forEach,但我认为您可以使用 p:columns
关于java - 具有不同类型列的 JSF 惰性数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18089238/
我正在 csv 上使用 hadoop 来分析一些数据。我使用sql/mysql(不确定)来分析数据,现在陷入了僵局。 我花了好几个小时在谷歌上搜索,却没有找到任何相关的东西。我需要一个查询,在该查询中
我正在为 Bootstrap 网格布局的“简单”任务而苦苦挣扎。我希望在大视口(viewport)上有 4 列,然后在中型设备上有 2 列,最后在较小的设备上只有 1 列。 当我测试我的代码片段时,似
对于这个令人困惑的标题,我深表歉意,我想不出这个问题的正确措辞。相反,我只会给你背景信息和目标: 这是在一个表中,一个人可能有也可能没有多行数据,这些行可能包含相同的 activity_id 值,也可
具有 3 列的数据库表 - A int , B int , C int 我的问题是: 如何使用 Sequelize 结果找到 A > B + C const countTasks = await Ta
我在通过以下功能编写此查询时遇到问题: 首先按第 2 列 DESC 排序,然后从“不同的第 1 列”中选择 只有 Column1 是 DISTINCT 此查询没有帮助,因为它首先从第 1 列中进行选择
使用 Bootstrap 非常有趣和有帮助,目前我在创建以下需求时遇到问题。 “使用 bootstrap 在桌面上有 4 列,在平板电脑上有 2 列,在移动设备上有 1 列”谁能告诉我正确的结构 最佳
我是 R 新手,正在问一个非常基本的问题。当然,我在尝试从所提供的示例中获取指导的同时做了功课here和 here ,但无法在我的案例中实现这个想法,即可能是由于我的问题中的比较维度更大。 我的实
通常我会使用 R 并执行 merge.by,但这个文件似乎太大了,部门中的任何一台计算机都无法处理它! (任何从事遗传学工作的人的附加信息)本质上,插补似乎删除了 snp ID 的 rs 数字,我只剩
我有一个 df , delta1 delta2 0 -1 2 0 -1 0 0 0 我想知道如何分配 delt
您好,我想知道是否可以执行以下操作。显然,我已经尝试在 phpMyAdmin 中运行它,但出现错误。也许还有另一种方式来编写此查询。 SELECT * FROM eat_eat_restaurants
我有 2 个列表(标题和数据值)。我想要将数据值列 1 匹配并替换为头文件列 1,以获得与 dataValue 列 1 和标题值列 2 匹配的值 头文件 TotalLoad,M0001001 Hois
我有两个不同长度的文件,file2 是一个很大的引用文件,我从中提取文件 1 的数据。 我有一行 awk,我通常会对其进行调整以在我的文件中进行查找和替换,但它总是在同一列中进行查找和替换。 所以对于
假设我有两个表,如下所示。 create table contract( c_ID number(1) primary key, c_name varchar2(50) not
我有一个带有 varchar 列的 H2 表,其检查约束定义如下: CONSTRAINT my_constraint CHECK (varchar_field <> '') 以下插入语句失败,但当我删
这是最少量的代码,可以清楚地说明我的问题: One Two Three 前 2 个 div 应该是 2 个左列。第三个应该占据页面的其余部分。最后,我将添加选项来隐藏和
在 Azure 中的 Log Analytics 中,我为 VM Heartbeat 选择一个预定义查询,我在编辑器中运行查询正常,但当我去创建警报时,我不断收到警报“查询未返回 TimeGenera
在 Azure 中的 Log Analytics 中,我为 VM Heartbeat 选择一个预定义查询,我在编辑器中运行查询正常,但当我去创建警报时,我不断收到警报“查询未返回 TimeGenera
今天我开始使用 JexcelApi 并遇到了这个:当您尝试从特定位置获取元素时,不是像您通常期望的那样使用sheet.getCell(row,col),而是使用sheet.getCell(col,ro
我有一个包含 28 列的数据库。第一列是代码,第二列是名称,其余是值。 public void displayData() { con.Open(); MySqlDataAdapter
我很沮丧:每当我缩小这个网页时,一切都变得一团糟。我如何将网页居中,以便我可以缩小并且元素不会被错误定位。 (它应该是 2 列,但所有内容都合并为 1)我试过 但由于某种原因,这不起作用。 www.o
我是一名优秀的程序员,十分优秀!