0

如果链接已被使用(单击),我们需要更改链接颜色。我们将 h:commandLink 与操作方法一起使用。下面是一个代码片段。

.xhtml 文件 -

<h:commandLink styleClass="changeLinkColor" action="#{bean.actionMethod}">
        <span><h:outputText value="UserName"/></span>
        </h:commandLink>

.CSS 文件 -

.changeLinkColor
{
 color:#0000FF;
 text-decoration:none;
}
.changeLinkColor a:link
{
 color:blue;
 text-decoration:none;
}
.changeLinkColor a:visited
{
    color: black;
}

除了 a:visited 之外,这里所有的样式都正常工作。但是,如果我们将 h:commandLink 更改为 h:outputLink,它就可以正常工作。但是后者没有动作方法属性。因此不能使用它。

如果您有任何解决方法可以使用 h:commandLink 标签更改链接颜色,请分享。

4

1 回答 1

1

当浏览器看到链接地址(href)被访问时,更改为访问颜色。

但是 commandLink 将生成一个带有 onclick 的链接,它将返回 false 以禁用 href 行为,例如:

<a onclick="return submitForm(x);" href="#">xx</a>

所以这不是 JSF 问题,是 html 问题。

我们的解决方案是:

  1. 创建一个不可见的 iframe
  2. 将 href 覆盖为魔术路径
  3. 覆盖onclick函数,让iframe先走魔道。

使用 jquery 示例:

    $(document).ready(function() {
      $("#linkDiv a").each(function(idx, elem)) {
        elem.href = '/dummy_' + elem.innerHTML + '.xhtml';
        var oldfunc = elem.onclick;
        $(elem).click(function(){
          invisibleFrame.location.href = elem.href;
          return oldfunc();
        });
      });
    });
于 2014-01-10T22:39:05.747 回答