见过有自动生成Seter和Geter方法的工具,不过好象不能解决你的问题!!!关注中!!!
解决方案 »
- java 应用程序中怎样传值
- jsp中调用linux服务器执行命令
- 在页面使用<c:forEach>嵌套显示问题
- jsp中按钮显示位置
- 动态定制查询条件,如何查询数据?
- JSTL访问SQL2000数据库问题
- 求助:IIS5.1加载jk插件,箭头就是不变绿
- 查询数据量太大,半天出不来东西,该怎么处理,百万级的数据!JAVA
- 请教:Communication link failure: java.io.IOException是什么错误!
- webserivce 如何获取request ,获取真实访问的IP
- 如何得到存储过程的return值
- 我用servlet + xml + jscript写的一个论坛
jsp中如:
<html:text property="data(name)" />
<html:text property="data(password)" />actionform 中
public DataForm extends ActionForm {
Map data = new HashMap(); public void setData(Map data) {this.data = data; }
public Map getData() {return this.data; } public Object getVal(String key) {
return data.get(key);
}
} action中
public testAction extends Action {
public ActionForward execute(....) {
String name = (String)((DataForm)form).get("name");
String password = (String)((DataForm)form).get("password"); ....
}
}
扩展性很好.
action中 :
String name = (String)((DataForm)form).getVal("name");这样做
优点:
jsp页面和DataForm可以分开来了,添加新的jsp页面不必改动DataForm.
缺点:
jsp中的javascript难写.
整个web application中的效率比较低,因为到处是map的cast.自己斟酌...
过多的页面和参数将为你带来不堪重负,使程序变得阅读困难。
也许你现在没有发现,但当请求过多的时候,你就会发现。如果你仅仅是嫌Form里面的getset方法繁琐的话,可以申明个Bean!
在form页面生成这个bean的getset方法。页面应用的的时候就beanName.beanProperty。更重要的一点是,页面显示和form,bean生成的字段都是对应数据库的。
极少数情况下,或者你有别的用途。这样增加字段只是对应数据库表的字段,而数据库的表结构应该是已经设计好的。
也就是说是固定的,那么声明这个实体Bean对应数据库的表字段不就行了么。多的也就不说了,多参看一些这方面的例子,看看。
我想,对于你遇到的问题可能已经有了解决的方法。
不要过于冥思苦想!学会接受,相信你会有更大的收获。
过多的页面和参数将为你带来不堪重负,使程序变得阅读困难。
----------------------------------------------------------
程序的阅读不是什么问题,相反在定义actionform时不必去查这个
字段有没有定义setter和getter方法。actionform的结构也清晰,
没有成百的setter,getter方法。也没有冗余的actionform。因为
整个的application中只有一个actionform,使你可以更关注于业务
逻辑。更重要的一点是,页面显示和form,bean生成的字段都是对应数据库的。
---------------------------------------------------------------
这个也不是什么问题.因为用这种参数的方法参数名字本身就可以是数据
库的字段名。只要记住这个字段名,action中照常用。这样增加字段只是对应数据库表的字段,而数据库的表结构应该是已经设计好的。
也就是说是固定的,那么声明这个实体Bean对应数据库的表字段不就行了么。
---------------------------------------------------------------
你不觉得持久层和表示层的分离用参数的方法不是更好吗?个人意见
^_^
就是楼主要找的
sagittarius1979你的回答正是我所想要的,但是我还有一个问题,那就是如何操作一个对象。例如,我原先在actionForm里有这样一代码:
Person person=null;
public void setPerson(Person person)
{
this.person=person;
}
public Person getPerson()
{
return person;
}
在我的JSP页面里有:
<html:text property="person.age"/>
那么在你的方法里面如何实现类似上面的例子。
Thank you.
另外,你的系统“页面显示和form,bean生成的字段都是对应数据库的。”
就说明你的系统设计有问题,怎么可能把所有数据库的字段原封不动的搬到界面上让用户输入?
----------------------------------
你的这种写法和我提供的方法是一样的,因为data(name) 等价于 data.name
所以你的actionform中person也应该是一个map.你在jsp中如何操作一个类(除去java代码)?
jsp上页面的属性只可能是String,boolean,file类型。不太了解你的逻辑.
<html:text property="person.age"/>
----------------------------------
你的这种写法和我提供的方法是一样的,因为data(name) 等价于 data.name
所以你的actionform中person也应该是一个map.不行,这样字做,会报错.
Map person=null;
public void setPerson(Map person)
{
this.person=person;
}
public Map getPerson()
{
return person;
}
<html:text property="person.age"/>
<html:text property="person.sex"/>
<html:text property="person.name"/>
这样我就可以在action里面直接
Person person=form.getPerson();
person.getAge();person.getSex();person.getName();
就可以获取到前台的传过来的值.现在做成Map后,原先的代码应改成:
<html:text property="data(person.age)"/>
<html:text property="data(person.sex)"/>
<html:text property="data(person.name)"/>
但是这样是错语的