1.ActionForm里访问DAO是否有违背MVC?
页面上有一个表单,<html:optionCollections>里绑定了一个从数据库里查出来的LIST
而查这个LIST的代码是写在Action里的。
不过现在有一个问题,如果表单提交的时候,没有通过ActionForm的验证,再次forward返回到这个页面的时候,这时LIST就是NULL
那就无法再次绑定数据了!我又不想把ActionForm存在Session里,就将查这个LIST的代码写在了ActionForm的构造里,请问这样是否有违背MVC?2.hibernate映射的问题,一个列在数据库里有默认值,我在映射这个属性的时候,加了insert="false"
不过这时发现了一个问题,当我save这个对象以后,数据库里确实添加了记录,不过有默认值的那一列,并没有将数据库生成的默认值反映到这个对象里去
这时应该怎么办?不会是要再查一次吧?3.hibernate,在用session.get和load的时候发现的问题。
用get方法查的时候,POJO的那个空构造可以是任何访问权限
可是用load不行,我改成private它报错?请问为什么谢谢回答,只有这么多分了。
页面上有一个表单,<html:optionCollections>里绑定了一个从数据库里查出来的LIST
而查这个LIST的代码是写在Action里的。
不过现在有一个问题,如果表单提交的时候,没有通过ActionForm的验证,再次forward返回到这个页面的时候,这时LIST就是NULL
那就无法再次绑定数据了!我又不想把ActionForm存在Session里,就将查这个LIST的代码写在了ActionForm的构造里,请问这样是否有违背MVC?2.hibernate映射的问题,一个列在数据库里有默认值,我在映射这个属性的时候,加了insert="false"
不过这时发现了一个问题,当我save这个对象以后,数据库里确实添加了记录,不过有默认值的那一列,并没有将数据库生成的默认值反映到这个对象里去
这时应该怎么办?不会是要再查一次吧?3.hibernate,在用session.get和load的时候发现的问题。
用get方法查的时候,POJO的那个空构造可以是任何访问权限
可是用load不行,我改成private它报错?请问为什么谢谢回答,只有这么多分了。
解决方案 »
- 踏入JAVA江湖一个月,一直不明白为什么这样会损失精度?各位大叔大妈速来指教指教
- 想得到一个样式201111080001
- 什么错误
- 谁知道路径选择对话框的类?
- 2003 server 下安装了j2sdk-1_4_1_03-windows-i586之后,双击执行.jar文件为什么一闪而过,XP下却正常运行?
- 这里有东北大学软件信息学院的学生吗 给我回个帖子
- 关于继承的疑问
- 构造函数、继承的SJCP的问题?
- 各路大虾,学java必须由c++经验吗?请告诉小弟
- JAVA 2 SDK 简体中文补充包(又名CJDK1.2)谁用过?如何?
- 最近开发了一个OA系统,Struts+JAVA+AJax,共同学习、共同进步!
- 谁能给出一个简单的关于接口开发的程序例子(主要是想理解一下思路),谢了!
2、Hibernate产生的是完整的insert语句,所以default丢失
3、get直接得到对象,如果库中没有返回null,load加载时如果数据库中没有抛出一个异常
而在提交表单的时候,会进行ActionForm的检测,如果检测不通过,则不会进Acion,而是直接forward到刚才的表单页!不过这时Action里的LIST已经被清空,所以无法再次绑定数据!这问这种情况要如何解决!是不是要用两个Action?第二三你没有回答我的问题!
第二题我问的是如何拿到那个默认值
第三题我是问为什么改成private就报错! 跟有没有数据没关系!数据是存在的
2,你save对象的时候,应该把这个的对象的那个需要默认值的值设置好比如(bean.setAddress("shanghai")) 设死它,加insert="false"是不行的。
3, get时,空构造是任何对象都可以访问的,这是没有错误的。你改成private,除了本类的方法外,外部是访问不到的啊,load当然会报错啦!
2.同意连默认值一并save进去
3.private按常理就该报错 报的是什么错?
比如:product.do?action=displayForm,这时,ActionForm里检测这个action的值,发现是displayForm,所以不进行输入验证,
ActionForm里不会进行输入验证!然后进入ACTION,ACTION查出LIST,保存到ACTIONFORM里,
然后forward到addProduct.jsp!jsp页面里有一个表单,提交地址是:product.do?action=save
jsp页面将这个LIST里的内容显示到一个<html:optionCollections>里 “添加”表单显示出来了,但是,如果我提交错误的数据时,先进入ActionForm,它检测到action的值是save,这时就会对输入进行验证
验证不通过!不会进入到ACTION,而是直接转到到input(这里也是addProduct.jsp)!因为没有进入ACTION,所以ACTIONFORM里的LIST自然是NULL
所以,这时,addProduct.jsp里的<html:optionCollections>就拿不到数据了!
不知道大家看明白没有呢?
2.如果连同默认值一起save,那数据库里的默认值不就没用了?
3.将构造改成private后,再用load去取,报错如下:
Exception in thread "main" org.hibernate.HibernateException: CGLIB Enhancement failed: entity.buMen
at org.hibernate.proxy.CGLIBLazyInitializer.getProxy(CGLIBLazyInitializer.java:102)
at org.hibernate.proxy.CGLIBProxyFactory.getProxy(CGLIBProxyFactory.java:47)
at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)
at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3121)
at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:232)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:173)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862)
at org.hibernate.impl.SessionImpl.load(SessionImpl.java:781)
at org.hibernate.impl.SessionImpl.load(SessionImpl.java:774)
at dao.indexDao.main(indexDao.java:21)
Caused by: java.lang.InstantiationException: entity.buMen$$EnhancerByCGLIB$$1568032d
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.hibernate.proxy.CGLIBLazyInitializer.getProxy(CGLIBLazyInitializer.java:99)
... 10 more不过改成get就没有问题了
dynamic-insert="true"和 dynamic-update= "true"
因为Action一多我容易乱(虽然说多个操作写在一个Action里也很乱)
我感觉建一个Action就为了读一个List有点浪费吧。。