我的代码在这里迭代每一行的列,每次迭代计算rendered
属性,过度调用testRule
。
<p:dataTable ...>
<p:column ...>
...
</p:column>
<p:column rendered="#{managedBean.testRule('rules.canDoActions')}">
<!-- Action buttons -->
<h:commandButton ...>
<h:commandButton ...>
</p:column>
</p:dataTable>
为了获得更好的性能,我想知道将结果设置为变量,但我不知道如何......它会变成这样:
<?:??? var="canDoActions" value="#{managedBean.testRule('rules.canDoActions')}">
<p:dataTable ...>
<p:column ...>
...
</p:column>
<p:column rendered="#{canDoActions}">
<!-- Action buttons -->
<h:commandButton ...>
<h:commandButton ...>
</p:column>
</p:dataTable>
另外,我不允许使用核心标记库,这意味着<c:set ../>
是不可能的。
在该范围内,我如何设置变量?或者,如果不可能,您建议如何解决性能问题?
答案 0 :(得分:5)
我不允许使用核心标记库,这意味着
<c:set ../>
无法使用
然后你可以将它存储在Bean本身并检查它是否为null calculateRules并设置值或只是返回。
例如:
HashMap<String, Boolean> map;
public boolean testRule(String stringInput) {
Boolean result = map.get(stringInput);
if (result == null) {
//calculate and set in map
}
return result;
}