2013-02-27 66 views
0

一個JSF元素我有一個<h:panelGrid>h:commandLink(鏈接基本上是一個圖像)。現在我想的是在鼠標懸停事件,然後鏈接應該渲染(render='true')和mouseout事件,它就會被刪除render='false'
但是我無法創建這樣的邏輯:我如何使用這些事件來做到這一點,因爲我正在使用的方法是在此事件上設置bean truefalse的值。
這裏是我的代碼渲染鼠標懸停

<h:form> 
     <h:panelGrid mouseover='** we cannot call a bean method here which changes the bean value **'> 

     This is the Div On which I want to apply mouseover event 
     </h:panelGrid> 

     <h:commandLink id="btn" render={renderBean.renderLink}> 
     <h:graphicImage url="image.jpg"/> 
     </h:commandLink> 


    </h:form> 


renderBeanrenderLink屬性的默認值是假的。 現在我想知道如何在鼠標懸停事件中將其值更改爲true這可能嗎? JSF中的任何其他解決方案w.r.t此要求

+1

在'onmouseover' /'onmouseleft'事件中顯示/隱藏鏈接的動機是什麼?請解釋您的功能要求,以獲得更好的指導。 – 2013-02-27 07:48:18

回答

3

您必須記住,JSF中的頁面將首先由Web服務器中的JSF引擎在服務器端進行處理。那時候所有的JSF標籤都會被轉換成它們的HTML等價物。 render屬性告訴服務器端引擎是否輸出代替<h:commandLink>元素的HTML a(錨點)鏈接。

您正在尋找的行爲,即響應鼠標事件,是客戶端功能。它發生在瀏覽器中,而不是在Web服務器上,所以不涉及JSF。解決方案是處理JavaScript中的鼠標事件,而不是JSF。您通常會在名爲btn的ID上設置(或刪除)CSS屬性display:none(不幸的是,它稍微複雜一點,因爲JSF會稍微修改元素ID)。在StackOverflow中有很多帖子處理如何處理JavaScript中的客戶端事件。例如使用jQuery是一種非常常見的方法。

我推薦你開始看看我們最好的JSF資源和長期StackOverflow用戶BalusC的一個博客:http://balusc.blogspot.com

有很多東西需要學習,你會先到那裏去找一個好的開始(並且在SO上搜索他的帖子)。

祝你好運。