关于springmvc中注解@ModelAttribute的bean(对象参数)问题

环境:jdk6 sping3.2.3  oracle10g

问题阐述:

我通过jsp提交一个表单,然后通过js方法$('#id').submit()函数,提交表单,通过post提交表单如下:

关于springmvc中注解@ModelAttribute的bean(对象参数)问题_第1张图片

我在springmvc的controller接受时,如下:

显然  我是通过bean对象来接受的,这很便利,但大家一定要注意:如果这个bean中有String 和int  没啥问题,如果包含long的类型(其他类型没测过)时,问题就出来了,

你通过测试发现  :js函数会触发submit()函数,但是就是不进入这个controller里,所以我的解决办法是把long改为String,之所以不用int,是应为库里的number很大,int根本接收不了,所以bean内部的写法 应该改为String .

         如果你的bean实现了RowMapper接口,必须要实现:

public Object mapRow(ResultSet rs, int arg1) ;接口,如果你bean的类型改为 String,而库里本身是number(20)或更大,那么这个接口对于这个字段的接口显然应该改为:

 

MyBean o = new MyBean();
o.setOrderIndx(String.valueOf(rs.getLong("xxx")));
当时 我这个改了,我很担心底层jdbcTemplate的update函数会有问题,毕竟bean的类型变了,可能会影响sql的拼写。

运行了一下,CRUD没有问题,我很好奇的去dao层看了下,形式如下:

public void addMyBean(MyBean o) {
		String insert_sql="insert into xxTableName(name1,name2)";
		Object[] objects = new Object[]{o.getName1(),o.getName2()};
		jdbcTemplate.update(insert_sql,objects );
}

我发现即便我的那个Bean属性是String,而对应库字段是number,这个方法依然没有问题。updatesql依然如此,我就不写了。看来spring做了很多事情啊,感觉世界又更和谐许多。。。仅此提醒自己

你可能感兴趣的:(关于springmvc中注解@ModelAttribute的bean(对象参数)问题)