1

マークアップが異なるパネルがたくさんあります。同じ Java クラスを再利用して、バリエーションを加えて解決したいと考えています。
一部のパネルでは一部のコンポーネントが欠落していますが、Java クラスに変更を加えて、ケースごとにコンポーネントの可視性を設定したくありません。それは少し面倒になる可能性があります。同じ Java クラスを再利用したいのですが、マークアップに欠落しているコンポーネントがあってもアプリは壊れません。1- パネル クラスにコンポーネントを追加して、マークアップで使用しないようにすることはできますか?

例えば:

Java
add(new Label("a","hello"));
add(new Label("b","hi"));
add(new Label("c","see ya"));
add(new Label("d","good bye"));

hello_1.hml
<span wicket:id="a">xxx</span>
<span wicket:id="b">xxx</span>
<span wicket:id="c">xxx</span>
<span wicket:id="d">xxx</span>

hello_2.hml<br>
<span wicket:id="a">xxx</span>
<div wicket:id="d">xxx</div>

hello_3.hml<br>
<div wicket:id="a">xxx</div>
<b wicket:id="c">xxx</b>

hello_4.hml<br>
<div wicket:id="a">xxx</div>

私の質問が明確であることを願っています。

4

2 に答える 2

6

質問に直接答えるには:いいえ、Java側とHTML側は完全に一致している必要があります。

ただし、特定のユースケースに応じて、常に回避策があります。

  1. HTML要素をCSSまたはスタイル属性から非表示にします。
  2. オプションのビットのレンダリングを回避するには、フラグメントを使用します。
  3. 単純なパネルを拡張するより機能豊富なパネルで、継承を使用します。
  4. コンポーネントをJavaコードから見えなくします。

しかし、問題はやや疑わしいように聞こえることを認めなければなりません。コンポーネントをより注意深く分離することで、問題全体を回避できる可能性があります。しかし、システムについてもっと知らなければ、それを知るのは難しいです。

于 2011-05-05T21:15:50.530 に答える
1

バリエーションに応じてJava階層にコンポーネントを追加するのはどうですか?

if ("4".equals(getVariation()) { add(new ComponentA("a")); }

于 2011-05-07T18:07:26.263 に答える