3
我的代碼在這裏遍歷每行的列,並且rendered
屬性每次迭代計算一次,過度調用testRule
。如何在JSF中設置變量?
<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 ../>
是無可爭議的。
在那個範圍內,我怎麼能設置一個變量?或者,如果不可能,您建議如何解決這個問題?
你爲什麼不 「允許」 使用JSTL核心標籤庫? – BalusC 2011-12-20 18:57:01
@BalusC:建築師決定不使用JSF的JSTL,因爲(如果我沒有錯的話)它運行在其他標籤的不同階段,這裏的人們在亂用它,混合東西,出現很多錯誤和混淆(如果我沒有錯,JSTL核心不會在ajax調用上重新運行)。 JSTL是爲JSP創建的,並且是爲其設計的。我知道它可以與JSF一起使用,但是,在這裏,架構師決定使用JSTL並不是最佳實踐。儘管我們犧牲了JSTL,但我們的問題已經解決了(相信JSTL不是那麼必要)。很高興和你談談,@BalusC! – falsarella 2011-12-20 19:21:03
JSTL確實沒有必要。但是,當您想要動態構建視圖時,它可能會有所幫助。另請參見http://stackoverflow.com/questions/3342984/jstl-in-jsf2-facelets-makes-sense雖然您的架構師肯定有一個有效的點(它確實經常令啓動者感到困惑),但完全限制它有點過分熱情。那麼''就是你的問題的答案。如果這不是一個選項(或者顯示其他問題;例如,它與視圖範圍的bean不能很好地協作),那麼你必須在getter中緩存自己。參見Jigar的答案。 –
BalusC
2011-12-20 19:29:42