Struts2 getText返回一个数字?

时间:2017-08-14 12:45:20

标签: java jsp struts2

我将应用程序从struts 2.1升级到struts 2.3.23但是我对新版本有一个奇怪的错误... 我在JSP中有以下代码:

<span id="n1"><s:text name="%{getText('prod_n1')}"/></span>

在我的属性文件中:

prod_n1=N-1

由于某些原因,这给了我输出&#34; -1.0&#34; ...

如果我更换&#34; N-1&#34;通过&#34; foo&#34;,然后我的输出是&#34; foo&#34;正如预期的那样。看起来像getText方法看到&#34; N-1&#34;作为一个数字!有关如何修复的想法吗?

2 个答案:

答案 0 :(得分:0)

经过更多调查后,我可以在空白页面上重现此错误,只有在<s:text/>标记内调用getText时才会出现这种情况。在此配置中,如果输入字符串以数字开头或结尾并且不包含空格,则输出始终为数字。它不仅发生在属性文件中,而且发生在任何输入(例如会话变量)上。

我看了一下Struts2的代码,我认为它是提取文本的方式,导致将输入视为浮点数。

所以,试着不要在“text”标签中使用这个方法......

答案 1 :(得分:0)

getText('prod_n1')的结果将按预期返回N - 1

然后,标记将结果用作已解析的OGNL,如果-1.0中的某个键N具有浮动值{{1},则会将其评估为valueStack }}。

然后,此键用于查找属性文件中的值。由于找不到这样的密钥0,因此打印出密钥。