作者winddust (喬狼)
看板Web_Design
標題[問題] [JSP]include加入判斷式寫法(參考canon網站)
時間Tue Feb 2 17:29:22 2010
我做過jsp相關專題是首頁一開始就是如圖二,假設點option的產品時,
<a target="_self" href="container.jsp?leftJspName=pr/pr_sb"></a>
↑左邊sidebar會顯示產品清單,但右邊內容不會變,是首頁預設的,
<a href="container.jsp?jspName=pr/pr_1&leftJspName=pr/pr_sb">產品1</a>
↑再點sidebar的產品1,右邊的內容才會置換成pr_1.jsp,
因為當初專題是團體作業,有的部份技術我不太熟,
最近才想參考canon官方網頁
http://www.canon.com.tw/,
練習用jsp架網頁,大致參考了它的layout,配置如下:
預設首頁index.jsp是這樣: 點選option.jsp的內容後:
┌─┬───────────┬─┐ ┌─┬───────────┬─┐
│ │ 標頭header.jsp │ │ │ │ 標頭header.jsp │ │
│留├───────────┤留│ │留├───────────┤留│
│ │ 選單option.jsp │ │ │ │ 選單option.jsp │ │
│ ├───────────┤ │ │ ├─┬─────────┤ │
│ │ 內容container.jsp │ │ │ │側│ │ │
│ ├───────────┤ │ │ │ │option連到的內容 │ │
│ │ 新聞news.jsp │ │ │ │欄│ │ │
│白├───────────┤白│ │白├─┴─────────┤白│
│ │ 頁尾footer.jsp │ │ │ │ 頁尾footer.jsp │ │
└─┴───────────┴─┘ └─┴───────────┴─┘
<圖一> <圖二>
目前我的想法是, 然後點option.jsp後(譬如產品pr.jsp),
將container.jsp+news.jsp塞進main.jsp, 將側欄(pr_sb.jsp)與內容(pr_cont.jsp)
用include進去,變成: include進pr_main.jsp:
┌─┬───────────┬─┐ ┌─┬───────────┬─┐
│ │ 標頭header.jsp │ │ │ │ 標頭header.jsp │ │
│留├───────────┤留│ │留├───────────┤留│
│ │ 選單option.jsp │ │ │ │ 選單option.jsp │ │
│ ├───────────┤ │ │ ├───────────┤ │
│ │ │ │ │ │ │ │
│ │ main.jsp │ │ │ │ pr_main.jsp │ │
│ │ │ │ │ │ │ │
│白├───────────┤白│ │白├───────────┤白│
│ │ 頁尾footer.jsp │ │ │ │ 頁尾footer.jsp │ │
└─┴───────────┴─┘ └─┴───────────┴─┘
<圖三> <圖四>
而且針對main.jsp與main_1.jsp,使用不同的css,
希望是在首頁時看能不能寫個判斷式,判斷現在是在首頁還是已點選option進入分頁:
(以上略)
<jsp:include page="option.jsp">
<% if(是首頁){ %>
<jsp:include page="main.jsp">
<% }else if(判斷點了option裡的哪個項目){ %>
<jsp:include page="該項目的xxx_main.jsp">
} %>
<jsp:include page="footer.jsp">
(以下略)
但是覺得一個jsp又include好幾層jsp,還要用判斷式很麻煩,
我的專題是從頭到尾都固定版型,canon跟我專題做的不太一樣,
它是首頁option點選後,下方news會消失,container往右縮,多出sidebar,
請問我該怎麼在版型上做調整,或是在option的超連結上調整?
譬如說點option的產品時,container改成pr_1?
<a target="_self" href="pr_1.jsp?leftJspName=pr/pr_sb"></a>
側欄也是container改成pr_1?
<a href="pr_1.jsp?jspName=pr/pr_1&leftJspName=pr/pr_sb">產品1</a>
我不曉得我用判斷式做不同include的想法是否正確且可行,或有更好的做法?
目前身邊用書有歐萊禮的深入淺出Servlet&JSP與碁峰的JSP2.0技術手冊,
要找方向的話,除了jsp:include標籤以外,還有沒有我沒注意到的?
=========================================================================
剛發完文想到,一開始版型我就先拉成:
┌─┬───────────┬─┐
│ │ 標頭header.jsp │ │
│留├───────────┤留│
│ │ 選單option.jsp │ │
│ ├─┬─────────┤ │
│ │側│ container.jsp │ │
│ │ ├ ─ ─ ─ ─ ─ ─┤ │
│ │欄│ news.jsp │ │
│白├─┴─────────┤白│
│ │ 頁尾footer.jsp │ │
└─┴───────────┴─┘
news.jsp是include進container.jsp裡的,sidebar.jsp預設是空的,
點選option時,才將分頁include進sidebar.jsp與container.jsp的位置,
不曉得是否可行?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.142.32
※ 編輯: winddust 來自: 220.135.142.32 (02/02 17:57)
→ TonyQ:jstl的話其實是可以搭配el 來判斷頁面. 02/03 12:26
→ TonyQ:需要sample的話我要翻一下 - -"" 好久沒寫了. 02/03 12:27
→ TonyQ:我以前曾經用jstl+el 實作不同語系頁面的切換. 02/03 12:27
→ TonyQ:你說的這種預先留好位置的版型也是ok , 因為實務上寫通用 02/03 12:29
→ TonyQ:版型限制很多 , 而且很難發揮 , 我是比較傾向於先寫好內容 02/03 12:29
→ TonyQ:再套css去出版 ,不同的版用不同的css來做控制. 02/03 12:29