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