2012-01-31 67 views
2

在我的Struts2的JSP,我想顯示的ID,所以我寫了:Struts2的S:標籤:標籤和值的位置顛倒

<s:label value="Id:">A${id}B</s:label> 

AB在這裏爲調試)

我希望它顯示爲Id:A7B
但下面是在HTML生成:A7BId:

爲什麼標籤放置在值之後,而不是之前?

如果我寫<s:label value="id" name="id" />那麼就產生如下:id

回答

3

我不是Struts2的專家,Struts2的文檔是可怕的。但是HTML標籤就是這樣:一個標籤。它只有一個「值」:標籤的文本:

<label>some text</label> 

所以,無論是用戶value屬性,或使用標籤體。如果您同時使用這兩個值來設置單個值,我不會期望特定的順序。我只想做這樣的:

<s:label>Id:A${id}B</s:label> 
+0

他們最近已經改善了很多,但對主要我很同意:) – 2012-01-31 11:48:39

2

這基本上是由於Struts2的是處理<s:label> tag.It的方式採用自由標記模板內部處理渲染HTML輸出,這裏是它在做什麼

<#if parameters.nameValue??> 
<@s.property value="parameters.nameValue"/><#t/> 
</#if> 

所以你逝去的值作爲變量參數和提取,要生成最終output.In你的情況下value="Id:"是越來越顯示第一和書房的標籤體,因此輸出是每一個你指定。

在第二種情況下,其工作方式與上述相同。因此,解決方案是使用作爲標記的值屬性或使其成爲標記身體的一部分選擇是你所有的!

+0

+1我選擇JB的答案,因爲它很簡單,適合我的需要,但由於爲解釋底層機制! – 2012-01-31 13:22:00

+0

@NicolasRaoul:最後它爲你工作,這是最好的事情:) – 2012-01-31 13:23:52

-1

對於我來說,

<s:label value="Id:%{testBean[#status.index].id}"/> 

給你想要的東西。您可以根據您的要求進行修改。

我不知道是什麼讓大家投票給我的答案。與屏幕截圖不敢相信:

enter image description here

<s:label value="Id:A%{id}B"/> will give you what you need. 
+0

我同意你的建議將工作肯定:) – 2012-01-31 12:52:03