重构具有大量属性的DataTable
Refactoring a DataTable with a large number of attributes
我 a data table 有 17 个属性。 table 可以在两种模式下呈现:启用行选择和不启用行选择。
<p:dataTable selection="#{isDefaultSelectionMode ? null : widget.selected}" />
它不起作用,因为 selection
期望对 属性 的引用能够 set/get 它。
我可以创建一个虚拟 属性 widget.ignored
并且它会起作用。我不喜欢这个,原因很明显。
<p:dataTable selection="#{isDefaultSelectionMode ? widget.ignored : widget.selected}" />
我可以将 table 分成两个单独的模板。我将从一个属性中排除 selection
并复制其他 16 个属性。也不是什么好东西。
我正在寻找一种优雅的解决方案,使属性成为可选属性(在某些情况下不呈现它)或避免定义虚拟 属性.
我是 JSF 和 PrimeFaces 的新手,欢迎指正。欢迎任何帮助。
幸运的是,我不必应用任何糟糕的解决方法。
根据@Kukeltje(谢谢)和他提供的链接的建议,我有条件地定义了属性
<c:if test="#{isDefaultSelectionMode}">
<f:attribute name="selection" value="#{widget.selected}"/>
</c:if>
有关详细信息,请访问以下问题:
- JSF 2.0 dynamic attributes without creating new components
- What is f:attribute used for in this example?
我 a data table 有 17 个属性。 table 可以在两种模式下呈现:启用行选择和不启用行选择。
<p:dataTable selection="#{isDefaultSelectionMode ? null : widget.selected}" />
它不起作用,因为 selection
期望对 属性 的引用能够 set/get 它。
我可以创建一个虚拟 属性
widget.ignored
并且它会起作用。我不喜欢这个,原因很明显。<p:dataTable selection="#{isDefaultSelectionMode ? widget.ignored : widget.selected}" />
我可以将 table 分成两个单独的模板。我将从一个属性中排除
selection
并复制其他 16 个属性。也不是什么好东西。
我正在寻找一种优雅的解决方案,使属性成为可选属性(在某些情况下不呈现它)或避免定义虚拟 属性.
我是 JSF 和 PrimeFaces 的新手,欢迎指正。欢迎任何帮助。
幸运的是,我不必应用任何糟糕的解决方法。
根据@Kukeltje(谢谢)和他提供的链接的建议,我有条件地定义了属性
<c:if test="#{isDefaultSelectionMode}">
<f:attribute name="selection" value="#{widget.selected}"/>
</c:if>
有关详细信息,请访问以下问题:
- JSF 2.0 dynamic attributes without creating new components
- What is f:attribute used for in this example?