2009-02-05 89 views
2

我正在研究基于Wicket的Web应用程序。在应用程序中有不是每个用户都有权使用的按钮。这些按钮实际上是简单的链接,例如有没有办法动态改变一个按钮的CSS类?

<a wicket:id="publishButton" title="Publish" class="rightPanel_publish"><wicket:message key="publish"/></a> 

带有设置其外观的CSS类(来自外部CSS文件)的例如

a.rightPanel_publish { 
    display: block; 
    width: 90px; 
    height: 27px; 
    background: url(../imgs/right_panel_icon03.gif) left top repeat-y; 
    text-decoration: none; 
    color: black; 
    padding: 12px 0px 0px 35px; 
} 

当用户没有被授权使用该按钮,链接被禁用(在Java中)和CSS,出于某种原因,已不再使用。

我的问题是这样的:有没有一种方法来确定链接在运行时被禁用并更改CSS类?我宁愿避免使用JavaScript(尽可能保持整个项目无JS)......并且更喜欢可以在所有浏览器中使用的东西。

多谢,

尤瓦= 8-)

回答

3

不幸的是我不知道的方式来改变一个按钮的页面,而JS。在页面载入唯一与页面交互的方式之后,CSS,Java和其他所有内容都在页面加载时运行。

但这里要说的是在任何浏览器(IE 6 +,Safari浏览器,歌剧,FF等)工作的JS,

if(document.getElementById('foo')) 
    { 
    document.getElementById('foo').className='bar'; 
    } 
1

有没有办法做到这一点没有某种形式的脚本。该“d”中的“DHTML”代表“的Javascript”:P


编辑:其实,既然你说东西被禁用链接/按钮时,事情就可以/也应该附加一个“禁用”类(使CSS注意到的唯一x浏览器方式)添加到同一元素。运行时切换不会进入它 - 如果事情正在改变状态,它需要彻底地完成。

0

我使用*.setVisible(Boolean boolean)

它可用于在检票WebMarkupContainer模型。 setVisible()可以根据用户角色在类中的其他地方分配。因此您可能必须寻找它...

1

检票链接取代<a>标记<范围>禁用时。

记住这一点,应用CSS时,如:

.rightPanel_publish_button { 
    display: block; 
    width: 90px; 
    height: 27px; 
    background: url(../imgs/right_panel_icon03.gif) left top repeat-y; 
    text-decoration: none; 
    color: black; 
    padding: 12px 0px 0px 35px; 
} 
1

你也可以用AttributeModifier改变按钮的外观(即CSS类),基于用户的认证状态:

myButton.add(new AttributeModifier("class", new AbstractReadOnlyModel<String>() { 

     private static final long serialVersionUID= 1L; 

     @Override 
     public String getObject() { 
      if (!isAuthorized()) { 
       return "rightPanel_unauthorized"; 
      } 
      return "rightPanel_publishbutton"; 
     } 
    })); 

在您的CSS中,您可以根据需要定义“.rightPanel_unauthorized”样式。

相关问题