2014-12-23 211 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'内像另一个''并且您更新了这个父容器。 –