Refactoring a DataTable with a large number of attributes

时间:2019-04-08 13:14:39

标签: jsf primefaces

I've got a data table with 17 attributes. The table can be rendered in two modes: with row selection enabled and without it.

<p:dataTable selection="#{isDefaultSelectionMode ? null : widget.selected}" />

It doesn't work because selection expects a reference to a property to be able to set/get it.

  1. I could create a dummy property widget.ignored and it's going to work. I don't like this for the obvious reason.

    <p:dataTable selection="#{isDefaultSelectionMode ? widget.ignored : widget.selected}" />
    
  2. I could split the table into two separate templates. I would exclude selection from one and duplicate 16 other attributes. It's not a good one, either.

I am looking for an elegant solution to either make the attribute optional (not to render it under some condition) or to avoid defining a dummy property.

I am new to JSF and PrimeFaces, feel free to correct. Any help would be welcomed.

1 个答案:

答案 0 :(得分:1)

幸运的是,我不必应用任何可怕的解决方法。

根据@Kukeltje(谢谢)和他提供的链接的建议,我有条件地定义了属性

<c:if test="#{isDefaultSelectionMode}">
    <f:attribute name="selection" value="#{widget.selected}"/>
</c:if>

有关更多详细信息,请访问以下问题:

相关问题