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フリーに保つように管理されています...)を使用することを避け、すべてのブラウザーで機能するものを好みます。

本当にありがとう、

ユヴァル=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 に答える