刚学struts2和hibernate3struts2的action中可以直接设定属性来接收页面传递来的值,或者定义一个VO对象VOEmployee(包含setter和getter) 来使用employee.name,enployee.age 等接受来自页面的字段age和name。菜鸟现在有如下几个问题请教各位:1.在持久层我们肯定也定义了一个PO对象PoEmployee,这个对象和以上的实体对象不就有些重复了么?但是将持久对象放到action中来接受来自页面的传递值,是不是不符合设计? 持久层不应该穿透逻辑层到上面来吧?2.假若页面的字段传递过来中,是一个关于员工添加的页面addEmployee.jsp ,其中包含员工的信息和其所在员工的部门信息。
在数据库中肯定对应的是员工信息表(其中肯定有一个字段是部门ID)定义持久层的PO类,大家肯定会都定义如下:class POEmploy
{
private String name;
private Integer age;
pirvate Department department;//定义对象关联
//getter和setter方法
}
但这个时候,就不可以放到action中来接受页面的传递的字段值了吧? 页面传递的是部门 id 值,而这里po类中使用的是部门这个对象.那是不是得又单独建立一个vo对象用来接收页面传递的值,像这样?:class VOEmploy
{
private String name;
private Integer age;
pirvate Integer depId; //部门编号
//getter和setter方法
}
这样可行吗?有人说直接使用action中字段的属性接收,当你页面有十几个值要传递时候,action中很多很多属性,不是乱七八糟感觉多建立以个vo来接受页面参数传递值,那又比struts1的actionForm 好得到那里去呢?不知道各位在商业项目中到底是怎么做的啊,请说说。 谢谢.
在数据库中肯定对应的是员工信息表(其中肯定有一个字段是部门ID)定义持久层的PO类,大家肯定会都定义如下:class POEmploy
{
private String name;
private Integer age;
pirvate Department department;//定义对象关联
//getter和setter方法
}
但这个时候,就不可以放到action中来接受页面的传递的字段值了吧? 页面传递的是部门 id 值,而这里po类中使用的是部门这个对象.那是不是得又单独建立一个vo对象用来接收页面传递的值,像这样?:class VOEmploy
{
private String name;
private Integer age;
pirvate Integer depId; //部门编号
//getter和setter方法
}
这样可行吗?有人说直接使用action中字段的属性接收,当你页面有十几个值要传递时候,action中很多很多属性,不是乱七八糟感觉多建立以个vo来接受页面参数传递值,那又比struts1的actionForm 好得到那里去呢?不知道各位在商业项目中到底是怎么做的啊,请说说。 谢谢.
解决方案 »
- 请教信用卡支付平台的对接程序(java)的思路
- 急急急,图片和流之间如何取舍
- 怎么样在一系列的用户操作中保持原子性呢
- NoClassDefFoundError:javax/management/j2ee/statistics/JMSEndpointStats
- inputvalue_display.innerHTML前面的ID值"inputvalue_display"可否在定义函数的时候作为一个变量来使用?
- 在j2ee中,若不使用struts,hibernate,spring,
- web.xml中配置spring出问题了,明天还好的,今天就不行了?
- Spring 异常的处理方法
- java.awt包和javax.swing包的区别是什么啊?
- 请哪位大哥帮我详细介绍一下J2EE,XML,EJB,UML, XHTML好嘛?谢谢
- 一个很奇怪的Struts2问题
- mysql编码(安装时和建表时有什么区别?)
1.也不一定 不是盲目的将PO转换成VO(虽然有些时候总感觉前台和数据库都用一个实体感觉不自在..)
几个目的 首先是封装 有些时候一个VO可能变成多个PO 或者有些时候PO里的数据不适合显示到前台 所以中途要有个封装的过程 顺带说一下 PO跟SESSION是有关系的 所以有些时候没VO来的方便(这个很重要)
2.如果你选择直接使用PO作为FORMBEAN的话 不是不可以 像你说的这种情况我们通常都会建立一个瞬态的属性 用来在不方便的时候方便一下
不用定义voemploy,虽然页面上可能有n多属性但只要在Action中new一个po对象即可,交互操作的是一个对象,例如添加一个或者删除一个都是对实例化的这个对象进行的操作。