想定する状況
デザイナ(コーダ?)とプログラマが分業しているとして、
納品された HTML
に、修正を加えていくフロー。
動的項目の挿入のためのマーカとしてのマークアップを HTML
に挿入する必要があるというシュチュエーションで、
挿入したマークアップが原因で UI
が壊れてしまった。
解決策
1. デザイナと相談してマークアップ自体を変更してもらう。
これも解決策。
ただ、マークアップとして意味がないものを挿入したりすることになると、デザイナもいい顔はしなそうに思います。
2. <wicket:container>
を使用する。
<wicket:container>
を使用すると、最終的に出力されるマークアップを汚さずに、
wicket
側のコンポーネントの挿入ポイントを定義することができます。
マークアップはいらないのだけど、動的項目を出力したいというケースはこちらを
使用するのが良い気がします。
<div>
<wicket:container wicket:id="labelText"></wicket:container>
</div>
- Java
// Add Label
add(new Label("labelText","Hello World..."));
- OUTPUT
<div>
Hello World...
</div>
3. Component#setRenderBodyOnly
を使用する。
ユーザーガイドの記載の通りなのですが、
* 6.8 How to render component body only
Component#setRenderBodyOnly
を true
にすることで、マークアップを出力しないようにすることができます。
こちらは、 ListView
内でマークアップ表示/非表示を条件によって切り替えたい場合、使えそうです。
その他の HTML
表示切替系の参考機能
以下、ユーザーガイドの6.9
、6.10
に記載された機能についてです。
こちらも、マークアップに影響を及ぼさずに実装を行うために使えそうです。
wicket:enclosure
タグ
Border
上記機能の Example
6.8、6.9、6.10 の Example
コードは以下に存在します。
以上です。
コメント