浏览 3533 次
锁定老帖子 主题:我在使用webwork做项目时遇到的问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-07-27
先说说我整个项目的框架,很简单的,数据层+业务逻辑层+Action+jsp 数据层、业务逻辑层和action还有jsp页面的通用代码是自己写了一个代码生成工具根据数据库结构生成xml文件,再生成java和jsp代码,基本生成以后就可以跑起来了。 现在是生成的代码中,每个数据表都对应一个Action,每个Action都有几个通用的方法: toListPage() toAddPage() toEditPage() performAddAction() performEditAction() performDeleteAction() 这里还用了Model-Driven,每个Action里面都有一个针对这个数据表的VO作为这个Action的Model。 现在发现有下边的问题不知道如何解决才能够漂亮清晰: 1、关于页面嵌入java代码 我做东西想尽量做的更好更完美,所以如果我用了ww的标签我就不想在jsp页面里面再嵌入哪怕是一句java代码,但是好像简单的没问题,但复杂一些的问题就出来了。比如我要做一个联动的下拉菜单,菜单的内容是由数据库取出来的。这时就不得不在jsp页面里插入java代码。比如下边: <% MagazineContentVO model = (MagazineContentVO)stack.findValue("magazineContentVO"); String viewName = ""; String strContentID = ""; if(model != null) { viewName = model.getMagazineName() + "(" + model.getMagazineYear() + "年第"; viewName += model.getMagazineNumber() + "期,总第" + model.getMagazineTotalNumber() + "期)"; strContentID = model.getMagazineContentId() + ""; } MagazineItemService itemService = new MagazineItemService(); MagazineSubitemService subitemService = new MagazineSubitemService(); List itemList = new ArrayList(); if(model != null) { PageDataObject allItem = itemService.getMagazineItem(model.getMagazineId(),10000,1); itemList = allItem.getDataList(); } %> <script> function changeItem() { var itemId = document.getElementById("model.itemId"); <% for(int i=0;i<itemList.size();i++) { MagazineItemVO item = (MagazineItemVO)itemList.get(i); %> if(itemId.value == <%=item.getItemId()%>) { var subitemId = document.getElementById("model.subitemId"); subitemId.options.length = 0; option = new Option("无","0"); subitemId.add(option); <% PageDataObject obj = subitemService.getSubitemList(item.getItemId(),10000,1); List subitemList = obj.getDataList(); for(int j=0;j<subitemList.size();j++) { MagazineSubitemVO subitem = (MagazineSubitemVO)subitemList.get(j); %> option = new Option("<%=subitem.getSubitemName()%>","<%=subitem.getSubitemId()%>"); subitemId.add(option); <% } %> } <% } %> } </script> 上面的代码就是一级栏目和二级栏目下来列表的联动代码,但是看着这些代码就感觉不爽,但目前我也想不出什么好办法解决。 2、Action里面包含数据的问题 生成每个Action的时候虽然只有一个model,但是往往有些业务需要更多的参数,那我就不得不在Action里面加入多余的东西来让Action可以接收到数据,但很多情况,这些多余的东西和这个Action其实本身并没有很大的联系,只是作为一个参数而已,多加一个两个还可以忍受,但是如果某个Action需要的参数非常多而且很没有规律不能放到一个class里面去封装,这时这个Action就非常难看了,比如,我要显示一本杂志里面的文章的信息,文章是和杂志有个对应关系,所以文章的model里面没有杂志的名称,但我又需要把杂志名称显示出来,于是我又有两种方式:a.在我的VO里面,加入一个杂志名称的属性和getset方法,然后取数据的时候同时把这个属性填充,这样我可以直接用文章的model中的属性。b.直接在action里面加入一个属性来使用。我一直是按照第一种方式做的,但是我怕以后,我的VO里面的属性越来越多越来越乱,就不好维护了,现在加入的可能和VO本身还有些关系,但如果加入另外一些和文章没有关系的属性,我觉得会乱七八糟。这是第二个问题。 3、在jsp页面用标签的问题 很多时候我需要在jsp页面的表单中显示数据,而我一般是用Dreamwaver调整页面,但是把标签加进去,dw里面看到的页面就不太对了,而且还可能修改了我的代码,这是比较麻烦的。比如: 本来我手写的是这样的代码 <input name="model.publishCycleName" type="text" size="30" value="<ww:property value="model.publishCycleName"/>" /> 到后来dw就强制的给我加了一个回车符,变成了 <input name="model.publishCycleName" type="text" size="30" value="<ww:property value="model.publishCycleName"/>" /> 这样数据就会出问题,多了一个回车符。 类似这样的问题还有很多,一直很头痛..... 暂时先提出这么多问题,希望帮忙回答一下,感激不尽!!!! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-07-27
1 webwork有级联选择的tag
2 你好像还没有领悟怎么用好OGNL 3 。。。 |
|
返回顶楼 | |
发表时间:2006-07-27
老大详细说说啊,俺比较菜,第一个我可以自己查,第二个麻烦说的详细点好不?
|
|
返回顶楼 | |
发表时间:2006-07-27
3,用ww的标签根本不需要写这样的语法……
<input name="model.publishCycleName" type="text" size="30" value="<ww:property value="model.publishCycleName"/>" /> 2. Magzine.Article.name |
|
返回顶楼 | |
发表时间:2006-07-27
不得不说,你还停留在struts那种Formbean的思考方式中,多翻翻这一版的帖子吧,有许多关于Webwork的ModelDriven的讨论。
|
|
返回顶楼 | |
发表时间:2006-07-28
downpour 写道 不得不说,你还停留在struts那种Formbean的思考方式中,多翻翻这一版的帖子吧,有许多关于Webwork的ModelDriven的讨论。
同意楼上, 1、<ww:doubleselect />,在Action中,好象用个Map来实现,在获得第二个List的时候,遍历Map,参考WW官方例子; 2、文章里面添加所属的杂志引用,象这样article.magazine; 3、<ww:textfield name="article.xxx" />如果name和value的一致的话,value可以省略,article.xxx有值存在的话,就会自动填充。 |
|
返回顶楼 | |