使用大量属性重构DataTable

问题描述 投票:0回答:1

我有17个属性的a data table。该表可以以两种模式呈现:启用行选择而不启用行选择。

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

它不起作用,因为selection希望对属性的引用能够设置/获取它。

  1. 我可以创建一个虚拟属性widget.ignored,它会起作用。我不喜欢这个显而易见的原因。 <p:dataTable selection="#{isDefaultSelectionMode ? widget.ignored : widget.selected}" />
  2. 我可以将表拆分为两个单独的模板。我会从一个中排除selection并复制其他16个属性。它也不是一个好的。

我正在寻找一个优雅的解决方案,要么使属性可选(不在某些条件下渲染它)或避免定义虚拟属性。

我是JSF和PrimeFaces的新手,随时纠正。任何帮助都会受到欢迎。

jsf primefaces
1个回答
1
投票

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

正如@Kukeltje(谢谢)和他提供的链接所建议的那样,我有条件地定义了属性

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

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

© www.soinside.com 2019 - 2024. All rights reserved.