2011-10-27 32 views
2

我知道有幾個方法可以做到這一點,但我正在尋找最好的方式(我是新來的小門)。動態HTML屬性在檢票

在下面的HTML代碼,我已經記2米的區域,我需要更換一些虛擬的文本。有問題的文本是{APP_TITLE}{PAGE_TITLE}。我只想用簡單的字符串替換它們。

問題

在第一<div>,什麼是替代這些值沒有鬆動的DIV中的內容和當前定義的div(和任何屬性在將來添加)屬性的最佳方式?

<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在任何給定的標籤更改特定的屬性,你只需要添加一個便門:id來標記,使檢票口檢測到您想要的變化。

例如。在HTML取代:

<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頁:

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}"))); 

有關AttributeModifier更多詳細信息,請參閱檢票文檔http://wicket.apache.org/apidocs/1.4/org/apache/wicket/AttributeModifier.html

+0

謝謝。我很樂意看到這個答案是通過提供的一些替代解決方案進行編輯的,以及爲什麼這些解決方案較差。 – Snekse