2010-06-30 64 views
3

HTML DIV当阿帕奇我面临JSF 1.2实现呈现HTML页面的幕后,是它甚至可以设定/代码东西,将显示一个纯HTML表/ DIV(不是JSF组件) 有条件的。当我搜索时,我看到,使用h:panelGroup是一个解决方案,但我还没有尝试过,在这里发布任何更好的方法或方法。显示或隐藏在JSF 1.2

它几乎就像想要说 - 写在Java中的JavaScript代码,并在HTML呈现注入了 - 这可能吗?

谢谢,

回答

12

几种方法。

  1. 使用<h:panelGroup layout="block">。它呈现HTML <div>元素。

    <h:panelGroup layout="block" rendered="#{bean.condition}"> 
        content 
    </h:panelGroup> 
    
  2. 紧裹<h:panelGroup>内的HTML <div>元件。无需任何客户端的属性,如idstyleClassonclick等为主,<h:panelGroup>将不会呈现任何内容。有了他们将然而呈现<span>元素(或<div>如果layout设置为block)。

    <h:panelGroup rendered="#{bean.condition}"> 
        <div>content</div> 
    </h:panelGroup> 
    
  3. 紧裹<f:verbatim>内的HTML <div>元件。

    <f:verbatim rendered="#{bean.condition}"> 
        <div>content</div> 
    </f:verbatim> 
    

它的方式并无特殊之处在于MyFaces的生成HTML。 Mojarra JSF的实现也是这样做的。竞争对手Struts2,Spring MVC,Wicket,Tapestry等..也是。也是Microsoft ASP.NET MVC。 PHP也。事实上所有的服务器端语言。只是因为网页浏览器不了解它们。这只能理解HTML/CSS/JS)

至于与Java/JSP/JSF混合JavaScript中,你会发现this article有用。

+0

+1服务器端语言的很好的解释。我会尝试这些方法。谢谢。 – gekrish 2010-06-30 19:32:27

+0

Mr @BalusC,我喜欢你的第一个方法,但问题是'layout'无法在我的jsp文件中解析。可能是什么原因。我正在使用jsf 1.2。谢谢! – 2012-04-27 10:10:39

+0

@Jam:它是在JSF 1.2中引入的。所以你使用的是JSF 1.1,或者你的IDE认为你使用的是JSF 1.1。无论运行代码,检查浏览器中生成的HTML,它是否工作?然后你的IDE错了。它不起作用吗?那么你显然实际上正在使用JSF 1.1。 – BalusC 2012-04-27 11:51:11