在我的Struts2 JSP中,我想显示一个id,所以我写道:
<s:label value="Id:">A${id}B</s:label>
(A
和B
在这里进行调试)
我希望它显示为Id:A7B
但是HTML中生成了以下内容:A7BId:
为什么标签放在价值之后,而不是之前?
如果我写<s:label value="id" name="id" />
,则会生成以下内容:id
答案 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}"/>
给你想要的东西。您可以根据自己的要求进行修改。
我不知道是什么让你们都拒绝投票给我的答案。相信屏幕截图:
<s:label value="Id:A%{id}B"/> will give you what you need.