繁体   English   中英

Primefaces动态列,以编程方式

[英]Primefaces dynamic columns, programmatically

我正在使用Primefaces重写(非常大的)旧的Richfaces应用程序。 我现在遇到一种情况,我得到两个列表,一个带有列名,一个带有应该表示为行的对象。

该对象如下所示:

public class AVeryGenericThingThatIDoNotLike {
    Object[] values;
    //Other parameters that I dont care about
}

当我应该显示它时,我希望它将values [0]映射到第一列,values [1]映射到第二列,依此类推。

我已经看了primaryfaces展示,并且有一个动态列的示例,但是我尝试了一下,但是当我不知道可以存在哪些列时,我无法使其工作。 我之所以不知道,是因为这些列是从一个包含行的数据库中决定的,该行会说应该存在哪些列,并且可以更改,因此我无法像展示示例中那样构建一个类来使所有列都可用。

有人可以在这里给我指点吗? 我已经坚持了几天,我真的需要帮助。

编辑:现在,它有点与Laabidi Raissi的解决方案一起工作。 我现在的问题是,对于某些列,我希望呈现按钮和命令链接。 通过这种方法,我只能获取字符串,并且如果我尝试返回诸如CommandButtons之类的对象,它将仅打印Java对象哈希。

如果您使用的是JSF2,那么我认为此解决方案可能对您有用。 首先,在托管bean中,从数据库(动态)构建列列表,然后:

<p:columns value="#{yourManagedBean.listOfColumnsFromDB}"  var="column" columnIndexVar="colIndex">  
  <f:facet name="header"> #{column}</f:facet>
  <h:outputText value="#{yourManagedBean.values[colIndex]}" />
</p:columns>

编辑:根据您的评论,我认为添加commandbuttonoutputlink非常明显(而不是outputText ):

<h:commandButton value="#{yourManagedBean.values[colIndex]}" action="#{yourManagedBean.someActionThatTakesAParam(colIndex)}" rendered="#{colIndex == 4}"/>

假设您想在第5列中使用commandButton。

那是您要找的东西吗?

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM