Struts2:label:标签和值的位置是反转的

时间:2012-01-31 10:32:38

标签: jsp struts2

在我的Struts2 JSP中,我想显示一个id,所以我写道:

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

AB在这里进行调试)

我希望它显示为Id:A7B
但是HTML中生成了以下内容:A7BId:

为什么标签放在价值之后,而不是之前?

如果我写<s:label value="id" name="id" />,则会生成以下内容:id

3 个答案:

答案 0 :(得分:3)

我不是Struts2专家,而且STruts2文档很糟糕。但HTML标签就是:标签。它只有一个“值”:标签的文字:

<label>some text</label>

因此,要么使用value属性,要么使用标记正文。如果您同时使用两个值来设置单个值,我不会指望特定订单。我会这样做:

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

答案 1 :(得分:2)

这基本上是由于Struts2处理<s:label>标记的方式。它在内部使用自由标记模板来处理HTML输出的呈现,这就是它正在做的事情

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

因此,您将值作为其标记参数传递并将其提取以生成最终输出。在您的情况下,value="Id:"首先显示并标记标记正文,因此输出与您拥有的一样指定。

在第二种情况下,它的工作方式与上述相同。所以解决方案要么用作标签的value属性,要么使它成为标签体选择的一部分就是你的全部!!!

答案 2 :(得分:-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.