Re: [JSP ] JSP可以傳物件嗎?
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 6 之 7 篇):