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