你的直觉是对的,你应该得到“foo@bar.com”。通过以下对 struts 版本 2.0.14 的测试,我可以在 from 中输入 !@#$#$^$&%#$%& 并将其显示在另一个页面上而不会出现问题。
我使用带有字符串的表单测试了一个简单的 struts 2.0.14 应用程序:
<s:form action="form-view.action" method="GET">
<s:textfield label="email" name="email"/>
<s:submit/>
</s:form>
一个基本的动作类(注意这个版本的 stuts2,你不需要 setter/getter):
package struts2;
import com.opensymphony.xwork2.ActionSupport;
public class FormViewAction extends ActionSupport{
public String email;
}
还有一个非常基本的显示页面,其中包含:
<s:property value="email"/>
这是struts.xml:
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package namespace="" name="example" extends="struts-default">
<action name="form-view" class="struts2.FormViewAction">
<result>/form-view.jsp</result>
</action>
</package>
</struts>
一定有配置问题......你是用maven构建的吗?为什么使用 2.0.14 版本而不是 2.2.1 版本?顺便说一句,我将测试应用程序从 2.2.1 降级到 2.0.14,这花了我大约 5 分钟的时间。我认为升级到当前版本不会有任何严重障碍,这将为您提供最新的文档。
我在 Glassfish 3.0.1 上运行了这个。
如果您不是使用 maven 构建,请列出您的库中的 jars、您的 web.xml 和 struts.xml 文件,如果可能的话,列出最小的 form.jsp、display.jsp 和一个 Action 类来重现该问题。