环境:jdk6 sping3.2.3 oracle10g
问题阐述:
我通过jsp提交一个表单,然后通过js方法$('#id').submit()函数,提交表单,通过post提交表单如下:
我在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做了很多事情啊,感觉世界又更和谐许多。。。仅此提醒自己