2013-02-27 65 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上搜索他的帖子)。

祝你好运。