作者TonyQ (骨头)
看板java
标题Re: [JSP ] JSP可以传物件吗?
时间Fri Jun 13 15:42:33 2008
※ 引述《dahanhsi (dahanhsi)》之铭言:
: 感谢大家的帮忙<(_ _)>
: 问题是在没有import A没错XD slalala猜对啦
: 因为是第一次写servlet/JSP都在网路上找教学的,没有学的很完整
: 问了很基本的问题sorry啦
: 然後回这篇是想问
: 在这种情况(产生报表),不管是传hashMap ArrayList或object ArrayList,
: 在view部份还是难免要跑个loop和用method (get())把资料取出来
: 这样好像就不是很纯粹的MVC了(在jsp还是有java code混杂xhtml code的部份)
: 有没有比较好的作法呢?
小弟最近在学的webwork就是在解决这个问题的,
不过我也还没有学的很精,把目前的心得大概打出来做分享。
────────────────────────────────
以webwork的架构而言,他是在後端有一个Action Class做先行者,
当网页commit(或get直接连)时(在action="xxx"的地方)会指定一个名字,
代表给要执行某一个Action Class(
下一段会介绍),
他透过xwork.xml指定那个名字跟Action的关系,
也可以在xwork里面为同一个ActionClass指定多个name。
---
Action本身是个类别,他扮演的角色有点像是JavaBean,
前面form commit过来的东西用过来的name做变数,
并且实做setter他就会自己把这些name跟对应的资料给set好。
然後会执行一个名字叫 execute 的method ,
在这里可以做到一般人常忽略的状态判断,
比方说参数不足、或什麽,可以传回一个PageNotFound指标,
再透过webwork从xwork.xml的设定转到错误页面去。
假设没有前述的异常状况,这里就应该要做到一些基本的运算,
这里的目标就是希望把view端需要的model都准备好,
比方说像读资料库後要显示的List就应该在这里准备好。
----
再来就是会在接一个view端的.jsp档,
(一样在xwork.xml中设定要用那个jsp当view端)
只要在Action Class 中
有写Getter的,在view端全部都接的到。
(没写setter或没有同名成员没关系,只看getter)
view端基本上应该都是以显示为主,捞资料生list应该要在之前就做完,
如果真的非不得已这里也要做运算,也以taglib能做的运算为主。
这里一般来讲都是用jstl搭配el来做,
比方说 <c:foreach ></c:foreach>。
虽然说这些tag本质上可能没有跟 java code差很多,
但是可以让jsp档案本身保持类似xhtml的结构化与一致性。
────────────────────────────────
很复杂吧,关於这点我真的不得不感谢Q老大的耐心指导。=.=a
────────────────────────────────
只看理论很抽象...
我用webwork的sample改了一份最基本版的code...
http://q84142665.myweb.hinet.net/Java/HelloWebWork.war
war档怎麽发布请自己依各家web server google -.-;;
────────────────────────────────
如果出现xalan错误,tomcat 里面的common\endorsed资料夹
有两个 jar ,用
http://xml.apache.org/xalan-j/ 替换。
那是jdk跟tomcat 解析xml的lib 版本不合的关系...
--
What do you want to have ? / What do you have?
从书本中,你可以发现我的各种兴趣。
从CD中,你可以了解我所喜欢的偶像明星。
或许从文字你很难以了解一个人,但从物品可以。
My PPolis , My past. http://ppolis.tw/user/Tony
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.134.27.68