2009-02-05 90 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」樣式。

相關問題