我使用的是Primefaces 3.5中的<code>p:dataTable</code>以及延迟加载和动态列。
我有三种类型的列,区别在于过滤的输入。一个有p: inputText
,一个有p: selectCheckboxMenu
,最后一个什么都没有。
列通过c:foreach
标记呈现。
<c:forEach var="col" items="#{cc.attrs.bean.sortedModelColumns}">
一切正常,但不是“懒惰”。我还有p:tabView
,其中每个选项卡都包含这个数据表,并且每个请求都会初始化所有bean。我知道,c:forEach
是在构建时评估的,所以它在tabView之前。
因此,我的问题是:如何在<code>p:dataTable</code>中呈现不同的列?
我试过ui:重复
如下:
<p:dataTable 'datatableDefinition' />
<ui:repeat var="#col" value="#{cc.attrs.bean.sortedModelColumns}">
columnsRendering
</ui:repeat>
</p:dataTable>
但这将是一个空的数据表。当我将<code>ui:repeat</code>放在<code>p:dataTable</code>之外时,它就工作了。
我还尝试了p:列
它可以很好地呈现所有内容,但是用于过滤p: inputText
的侦听器
<p:ajax event="keyup" listener="#{cc.attrs.bean.filterListener}" />
不要工作。
我想,我有两个选择。首先:让p:列以某种方式工作,或者尝试在< code>p:tabView中使用< code>c:if,但是我不知道如何在tab切换事件上触发< code>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
问题内容: 我正在使用ajax加载数据并在DataTable中动态生成列名。我的数据表具有不同的列数,具体取决于用户的选择。(有一个下拉列表)。 例如,下拉列表中有2个选项,即“ 南部省” 和“ 北部省” 。 南部省 表有4列, 北部省 表有6列。 场景1 第一个用户选择具有4列的 Southern Province 。然后它生成的表没有错误,但是在此之后,如果用户选择具有6列的 Northern
我正在使用的数据库有许多具有相同列但(显然)具有不同表名的表(不是我设计的)。例如(这些是数据库表名): 有没有可能用JPA和Hibernate将这些映射到一个Java类实体?类的名称是,然后在使用它时传入例如,以便对象使用表? 还是只使用普通的、普通的Java对象来完成这样的任务更好? 谢谢你!
我的数据库中有两个表,这些表具有相同的精确列和数据类型,但顺序不同。 表A有列:A、B、C、D。 表B有以下列:A、C、D、B。 我有一个使用JooQ查询数据库的应用程序,它利用Codigen来创建表格和记录。但是,由于编译错误,它不允许我合并两个选择语句。我能做什么,把两张桌子合并起来? 在union函数内部的变量上,它与SelectUnionStep中的类型不匹配有关。关于union(ARec
API调用 API响应equation_list字段包含整数数组或字符串。例如: 但我有个例外 com.google.gson.java.lang.IllegalStateException:预期BEGIN_ARRAY但在第1行第1586列路径$[5]处是STRING。equation_list 我如何满足我的要求?
问题内容: 我目前正在使用Gson用Java编写RSS feed解析器。我正在将RSS的XML转换为JSON,然后使用Gson将JSON反序列化为Java POJO(有点回旋,但是有原因)。就下面列出的Feed#1( BBC )进行反序列化而言,一切工作正常,但是对于下面列出的Feed#2( NPR ),我开始抛出异常。 我认为我已经确定了问题,但不确定如何解决该问题: 这是由于以下两个RSS F
我想根据两个属性按升序对数组进行排序。 我有以下数据数组,看起来像 我想把它排序成 我想根据属性按升序对数组进行排序,如果多个项目存在相同的,那么我想根据属性的对其进行排序。 我在这里面临的问题是,< code>subCode在字符串中,< code>code在数字中。我尝试使用< code>array.sort并解析整数形式的< code>subCode,但它返回了我不理解的不同数字。