2014-12-23 208 views
0

組件比方說,我有JSF渲染JS

<p:outputPanel/> 

我想要做的就是指定渲染ATTR使用js的方法不是服務器端。 這是爲了改善性能。 所以,我需要這樣的東西:

<p:outputPanel rendered = "someJsFunction()"/> 

什麼解決的辦法?

+1

我不相信這是可能的,是定義將渲染哪個組件的服務器端,在客戶端它只是爲時已晚。 CSS可見屬性可能是一個解決方案 – Pellizon

回答

1

rendered propery在服務器端進行處理,如果它解析爲false,則element不會添加到html文檔中。所以javascript甚至找不到要素顯示隱藏因爲它不是創建

你可以做的唯一的事情就是刪除渲染的屬性並用javascript改變元素的顯示屬性。

<div id="myDiv">My Content</div> 

<button onclick="myFunction()">Click Me</button> 

<script> 
function myFunction() { 
    document.getElementById("myDIV").style.display = "none"; 
} 
</script> 
0

好了,你可以在頁面加載導致同樣的效果rendered屬性只,因此,使用jQuery,你可以不喜歡它

$(document).ready(function() { 
    document.getElementById("YourPanelIdHere").style.display = "none"; 
}); 

,它會不顯示在服務器端解決。

+0

不僅如此。如果'rendered'的計算結果爲'false',那麼該組件不在JSF支持的組件樹視圖中,因此它不能被重新渲染,除非它在另一個'UIContainer'內像另一個''並且您更新了這個父容器。 –