Java Struts 2表单处理的奇怪问题

Java Struts 2表单处理的奇怪问题,java,jsp,struts2,Java,Jsp,Struts2,我正在测试如果在我的操作中设置了一个整型字段,并且有人试图为它提供一个字符串值,将会发生什么 例如: public class FooAction extends ActionSupport { private Integer foo; public Integer getFoo() { ... } public void setFoo(Integer foo) {... } public String execute() { Syst

我正在测试如果在我的操作中设置了一个整型字段,并且有人试图为它提供一个
字符串
值,将会发生什么

例如:

public class FooAction extends ActionSupport
{
   private Integer foo;
   public Integer getFoo() 
   { ... }

   public void setFoo(Integer foo)
   {... }

   public String execute()
   {
      System.out.println( foo );
      return SUCCESS;
   }
}
如果我创建以下表单并尝试提交它:

<form method="post" action="/foo.action">
  <input type="text" name="foo" />
  <input type="submit" value="go" />
</form>
jsp此行的输出是
bar
(这是我在表单中键入的内容),即使
foo
字段是整数,并且在尝试输出时在输出窗口中得到了
null


有人能解释一下交易是什么吗?

您的堆栈上可能有conversionError拦截器

下面是来自

此外,任何包含验证错误的字段都会保存其原始值,以便对该值的任何后续请求都会返回原始值,而不是操作中的值。这一点很重要,因为如果值“abc”已提交且无法转换为int,我们希望再次显示原始字符串(“abc”),而不是int值(可能为0,这对用户来说意义不大)


您的堆栈上可能有conversionError拦截器

下面是来自

此外,任何包含验证错误的字段都会保存其原始值,以便对该值的任何后续请求都会返回原始值,而不是操作中的值。这一点很重要,因为如果值“abc”已提交且无法转换为int,我们希望再次显示原始字符串(“abc”),而不是int值(可能为0,这对用户来说意义不大)


因此,基本上,即使你没有成功,你也在回归成功。我猜request参数设置正确,但是转换fails@user2310289是的,只是为了调试。但我不明白的是,在.jsp文件中,当在操作中显示null时,它如何显示foo的字符串值?@user2310289顺便说一句,即使我返回错误,我仍然会在控制台中看到关于异常的警告(因此它仍然尝试将字符串值分配给整数字段),如果我使用相同的.jsp作为错误结果,它仍然输出
foo
的字符串值,只是为了清楚起见,请求中的每个参数都是一个字符串。Struts 2有一组默认转换器,可以在您不知情的情况下管理对动作属性的基本转换。检查以下网址:顺便问一下,谁否决了这个问题。这是一个合法的问题,因为Struts2中有很多事情发生在幕后。因此,基本上,即使没有成功,您也在返回成功。我猜request参数设置正确,但是转换fails@user2310289是的,只是为了调试。但我不明白的是,在.jsp文件中,当在操作中显示null时,它如何显示foo的字符串值?@user2310289顺便说一句,即使我返回错误,我仍然会在控制台中看到关于异常的警告(因此它仍然尝试将字符串值分配给整数字段),如果我使用相同的.jsp作为错误结果,它仍然输出
foo
的字符串值,只是为了清楚起见,请求中的每个参数都是一个字符串。Struts 2有一组默认转换器,可以在您不知情的情况下管理对动作属性的基本转换。检查以下网址:顺便问一下,谁否决了这个问题。这是一个合法的问题,因为struts 2中有很多事情发生在幕后。我没有设置拦截器,所以默认情况下它必须调用该拦截器。该拦截器位于struts默认堆栈上,因此它可能来自那里。必须是它。我没有设置拦截器,所以默认情况下它必须调用该拦截器。该拦截器位于struts默认堆栈上,因此它可能来自那里。
<h2><s:property value="foo" /></h2>