题
我工作的一个基于Wicket的Web应用程序。在应用程序中也有,并不是每一个用户被授权使用的按钮。这些按钮实际上是简单的链接,e.g。
<a wicket:id="publishButton" title="Publish" class="rightPanel_publish"><wicket:message key="publish"/></a>
与CSS类(从外部CSS文件)设置它们的视觉外观,e.g。
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 - )
解决方案
不幸的是我不知道的方式来改变一个按钮的页面,而JS。 CSS,Java和其他一切运行而加载页面时,页面加载与网页是通过JS进行交互的唯一途径了。
然而这里是在任何浏览器的工作原理的JS(IE 6+,Safari,Opera或FF等),
if(document.getElementById('foo'))
{
document.getElementById('foo').className='bar';
}
其他提示
有没有办法做到这一点没有某种形式的脚本。在 “d” 中的 “DHTML” 代表 “的Javascript”:P
编辑:其实,既然你说的的东西的被禁用链接/按钮时,事情就可以/也应该附加一个“禁用”类(只适用于X浏览器的方式来获得CSS通知)到相同的元件。运行时切换不会接触到它 - 如果事情是不断变化的状态,它需要这样做透
检票链路与一个禁用时更换标签
应用CSS时,e.g记住这一点:
.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;
}
您也可以与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”的风格,你需要它。
我使用*.setVisible(Boolean boolean)
它可用于在检票WebMarkupContainer模型。 该调用setVisible()可以在其他地方基于用户角色的类来分配。所以你可能要寻找它...