我想使用 Richfaces 在左键单击出现链接的文本(蓝色文本、下划线和鼠标悬停光标)时呈现上下文菜单。因此,想象一个链接,单击该链接会显示一个上下文菜单。请注意,我不关心文本是否确实是一个链接,我只是希望它作为链接出现。因此,即使是普通文本也可以,我会使用 CSS 将其显示为链接。
我有以下条件:
- 上下文菜单必须出现在客户端,无需发出请求。
- 上下文菜单必须使用数据表内的
rich:componentControl
(这些“链接”)出现,因此必须重复使用相同的rich:contextMenu
。
我仍然没有找到令人满意的解决方案,因为我尝试过的每一种方法都给我带来了问题:
- 如果我使用
h:outputText
(这将是理想的),我无法在其上附加rich:componentControl
(我猜是因为它无法触发 onclick 事件) . - 如果我使用
a4j:commandLink
,虽然我可以附加一个rich:componentControl
,但它会发出服务器请求。我试图添加onclick="return false;"
来阻止请求,但是 Richfaces 添加了由rich:componentControl
生成的 JS在onclick里面,导致这段代码根本就达不到,当然上下文菜单也根本不出现。
有什么办法吗?请记住,没有要求!
最佳答案
你可以试试
<rich:componentControl disableDefault="true" ...>
根据带有此参数的文档,componentControl 应该添加 return false;
本身。
但请注意相应的错误:RF-5607
如果文档存在谎言,您可以使用 html anchor 。 This answer展示了如何使用 componentControl 创建链接而不刷新页面:
<h:outputLink value="#" id="link" onclick="return false;">
<h:outputText value="Link text"/>
<rich:componentControl attachTo="link" for="panel" operation="show" event="onclick"/>
</h:outputLink>
onclick="return false;"
阻止 anchor 将页面滚动到单击的链接。
关于java - Richfaces:带有 ContextMenu 的链接式文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4919446/