我正在开发基于Wicket的Web应用程序。在应用程序中,有一些按钮并非每个用户都有权使用。这些按钮实际上是简单的链接,例如
<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免费到目前为止...),并且更喜欢适用于所有浏览器的东西。
非常感谢,
Yuval = 8 - )
答案 0 :(得分:3)
不幸的是,我不知道如何在没有JS的情况下更改按钮的页面。页面加载后,CSS,Java和其他所有内容都会在页面加载后运行,与页面交互的唯一方法是通过JS。
然而,这里的JS适用于任何浏览器(IE 6 +,Safari,Opera,FF等),
if(document.getElementById('foo'))
{
document.getElementById('foo').className='bar';
}
答案 1 :(得分:1)
如果没有某种脚本,就没有办法做到这一点。 “DHTML”中的“D”代表“Javascript”:P
编辑:实际上,既然你说某些东西正在禁用链接/按钮,那么某些东西可能/也应该附加一个“禁用”类(唯一的x浏览器方式让CSS注意到)相同的元素。运行时切换不会进入它 - 如果一个东西正在改变状态,它需要彻底完成。
答案 2 :(得分:1)
Wicket链接替换&lt; a&gt;标记为&lt; span&gt;禁用时。
在应用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;
}
答案 3 :(得分: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”样式。
答案 4 :(得分:0)
我使用*.setVisible(Boolean boolean)
它适用于Wicket中的WebMarkupContainer模型。 可以基于用户角色在类的其他位置分配setVisible()。所以你可能不得不寻找它......