我有一个<h:panelGrid>
和h:commandLink
(链接基本上是一个图像)。现在我想在鼠标悬停事件上,然后链接应该呈现(render='true')
,在鼠标悬停事件上,它被删除了render='false'
.
但是我无法创建逻辑,我怎么能用这些事件做到这一点,因为我使用的方法是在这个事件上设置bean true
和false
的值。
这是我的代码
<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>
renderBean
的renderLink
属性默认值为false。现在我想知道的方式,我怎么能改变它的值为true
在鼠标悬停事件?可能吗?OR JSF中的其他解决方案
您必须记住,在JSF中,页面将首先由web服务器中的JSF引擎在服务器端处理。那时,所有JSF标记都将被转换为它们的HTML等价物。render
属性告诉服务器端引擎是否输出HTML a
(锚)链接来代替<h:commandLink>
元素。
您正在寻找的行为,即响应鼠标事件,是客户端功能。它发生在浏览器中,而不是在web服务器上,因此不涉及JSF。解决方案是用JavaScript处理鼠标事件,而不是用JSF。您通常会在名为btn
的id上设置(或删除)CSS属性display:none
(不幸的是,它稍微复杂一些,因为JSF会稍微混淆元素id)。在StackOverflow上有很多关于如何在JavaScript中处理客户端事件的帖子。例如,使用jQuery是一种非常常见的方法。
我建议您首先看看我们最好的JSF资源之一和长期StackOverflow用户BalusC的博客:http://balusc.blogspot.com。
有很多东西要学,你会得到一个良好的开端,先去那里(并搜索他的帖子在SO)。
好运。