2

我正在开发一个基于 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-free...),并且更喜欢适用于所有浏览器的东西。

非常感谢,

尤瓦尔=8-)

4

5 回答 5

3

不幸的是,我不知道如何在没有 JS 的情况下更改按钮页面。CSS、Java 和其他一切都在页面加载时运行,在页面加载后与页面交互的唯一方法是通过 JS。

然而,这里是适用于任何浏览器(IE 6+、Safari、Opera、FF 等)的 JS,

  if(document.getElementById('foo'))
  {
    document.getElementById('foo').className='bar';
  }
于 2009-02-05T15:09:24.000 回答
2

您还可以根据用户身份验证状态使用 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”样式。

于 2012-06-27T08:03:35.197 回答
1

如果没有某种脚本,就无法做到这一点。“DHTML”中的“D”代表“Javascript”:P


编辑:实际上,既然你说某些东西正在禁用链接/按钮,那么某些东西可以/应该也将一个“禁用”类(让 CSS 注意到的唯一 x 浏览器方式)附加到同一个元素。运行时切换不会进入它 - 如果一个事物正在改变状态,它需要彻底这样做。

于 2009-02-05T15:12:10.640 回答
1

Wicket 链接在禁用时将 <a> 标记替换为 <span>。

应用 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;
}
于 2012-04-21T16:29:39.403 回答
0

我用*.setVisible(Boolean boolean)

它可用于 Wicket 中的 WebMarkupContainer 模型。setVisible() 可以根据用户角色分配到类中的其他位置。所以你可能不得不寻找它......

于 2011-01-31T15:43:58.667 回答