a:在JSF 1.2中访问过不使用h:commandLink

时间:2013-04-18 16:11:21

标签: 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:visit之外,所有样式都正常工作。 但是,如果我们将h:commandLink更改为h:outputLink,它可以正常工作。但是后者没有动作方法属性。因此无法使用它。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

所以这不是JSF问题,是一个HTML问题。

我们的解决方案是:

  1. 创建一个不可见的iframe
  2. 将href覆盖为魔术路径
  3. 覆盖onclick函数,让iframe首先进入魔术路径。
  4. 使用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();
            });
          });
        });