css - 一个 :visited not working with h:commandLink in JSF 1. 2

标签 css jsf-1.2

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

.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,它就可以正常工作。但是后者没有 Action 方法属性。因此不能使用它。

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

最佳答案

当浏览器看到链接地址(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();
        });
      });
    });

关于css - 一个 :visited not working with h:commandLink in JSF 1. 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16088008/

相关文章:

javascript - CSS加载为图像/PNG

javascript - 子元素的 className 会影响父元素

jsf - 异常时不重定向到错误页面

html - 如何底部对齐 DIV 元素中的两个元素?

javascript - 更改内联 SVG 的颜色

css - 何时使用最大宽度 : none for block?

java - JSP 和 EL 与 JSF 1.x actionListener 冲突

richfaces - 如何使用 JSTL 在 JSF 1.2 页面中强制构建阶段?

xpages - 是否有相当于 JSF <ui :debug/> tag? 的 XPages

java - NumberFormat 本地化问题