我将应用程序从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;作为一个数字!有关如何修复的想法吗?
答案 0 :(得分:0)
经过更多调查后,我可以在空白页面上重现此错误,只有在<s:text/>
标记内调用getText时才会出现这种情况。在此配置中,如果输入字符串以数字开头或结尾并且不包含空格,则输出始终为数字。它不仅发生在属性文件中,而且发生在任何输入(例如会话变量)上。
我看了一下Struts2的代码,我认为它是提取文本的方式,导致将输入视为浮点数。
所以,试着不要在“text”标签中使用这个方法......
答案 1 :(得分:0)
getText('prod_n1')
的结果将按预期返回N - 1
。
然后,标记将结果用作已解析的OGNL,如果-1.0
中的某个键N
具有浮动值{{1},则会将其评估为valueStack
}}。
然后,此键用于查找属性文件中的值。由于找不到这样的密钥0
,因此打印出密钥。