2011-10-27 18 views
2

私はこれを行ういくつかの方法があると知っていますが、私は最良の方法を探しています(私はWicketを初めて使っています)。Wicketの動的HTML属性

以下のHTMLコードでは、ダミーテキストを置き換える必要がある2つの領域をマークしました。問題のテキストは{APP_TITLE}{PAGE_TITLE}です。私は単純な文字列で置き換えるだけです。

QUESTION最初<div>

、DIV内の内容と現在のdivを定義し(そしてどんな属性は将来的に追加されている)の属性を失うことなく、それらの値を交換するための最良の方法は何ですか?あなたが変更を配置したい場所を検出するために、改札を可能にするために、タグにID:

<html lang="en"> 
<head> 
    <!-- Replace here --> 
    <title>{APP_TITLE} - {PAGE_TITLE}</title> 
</head> 
<body> 
    <!-- Replace here --> 
    <div class="corpAppTemplate" corp:app="{APP_TITLE}" corp:title="{PAGE_TITLE}"> 
     <ul class="corpAppMenu" wicket:id="MenuList"> 
     </ul> 
     <span wicket:id="UserID">UserID</span> 
       <wicket:child/> 
    </div> 
</body> 
</html> 
+0

を参照私は質問を理解できないかもしれません。特に、「AttributeModifier」に間違ったものがありますか? – biziclop

+0

いいえ、私はそれが最善の解決策であるかどうかを見たいだけです。私は答えに影響を与えたくないので、言及しませんでした。 – Snekse

+0

十分に公正。それは一般的に最善の解決策です。 – biziclop

答えて

7

あなたが任意のタグの特定の属性を変更するためにAttributeModifierを使用することができ、あなただけの改札を追加する必要があります。

例えば、

<div class="corpAppTemplate" corp:app="{APP_TITLE}" corp:title="{PAGE_TITLE}"> 

<div wicket:id="template" class="corpAppTemplate" corp:app="{APP_TITLE}" corp:title="{PAGE_TITLE}"> 

とし、Javaのページに以下を追加します:HTMLで置き換えるAttributeModifierの詳細については

template = new WebMarkupContainer("template"); 
add(template); 

template.add(new AttributeModifier("corp:app", true, new Model("{APP_TITLE}"))); 
template.add(new AttributeModifier("corp:title", true, new Model("{PAGE_TITLE}"))); 

、改札のドキュメントhttp://wicket.apache.org/apidocs/1.4/org/apache/wicket/AttributeModifier.html

+0

ありがとうございます。私は、この回答がいくつかの代替ソリューションが提供されていて、なぜそれらのソリューションが劣っているのかを見てみたいと思っています。 – Snekse