成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JSF通過URL來傳遞參數

開發 后端
本文介紹JSF可以通過URL來傳遞參數,在Backing Bean里可以通過ValueBinding的getValue取得URL參數。

當初看上JSF,是因為看中了幾個好處:

1、獲取或顯示表單數據時用相同的EL即可,JSF之前的EL只能get不能set;

2、MyFaces實現里面有很多很“炫”的組件,例如下拉菜單,樹型控件,日期選擇控件等等,使用極其方便。

于是就在一個小項目中使用JSF開發,用著就發現其實這個東西也帶來了很多比以前更麻煩的地方,就拿很常見的數據庫操作——查詢、修改、插入、刪除來說明使用JSF來實現有什么麻煩:

1)查詢。對于小數據量,用一個dataTable就什么都搞定了??墒谴髷祿糠猪摼捅容^麻煩了,因為dataTable的分頁是把所有數據都取出來然后再一頁頁顯示,而大數據量下一般是要看哪一頁就取哪一頁。網上有個通用的分頁存儲過程,只要把一系列參數(頁碼,排序依據,每頁大小等)傳給它,就能獲得某一頁的數據。如果直接通過URL來傳遞參數,服務器根據參數來調用存儲過程,是很方便的事情。可是JSF卻不通過URL來傳遞參數了,整個頁面處理的過程也比較復雜,沒有以前那樣直觀。有人改了一下dataModel的實現方式,使它每次只取一頁的數據,效果是達到了,但要跳到某一頁,卻只能點鏈接,不能通過輸入URL來到達了(也就是不能把某一頁添加到收藏夾里了)。

這兩天做了一些試驗,在JSF里還是可以通過URL來傳遞參數的,在Backing Bean里可以通過ValueBinding的getValue取得 URL參數,然后根據參數來從數據庫中取得相應的內容,生成某個對象的bean,再在頁面上顯示出來。不過這樣一來,似乎就跟servlet差不多了。
如果可以通過配置來設定表單提交是get方式還是post方式就好了??墒悄壳耙宦芍荒躳ost,這樣造成的后果除了不能收藏,不能刷新(會提示是否重新提交數據)之外,還會使瀏覽器的后退功能失效。

2)修改。在datatable中把數據顯示出來后,可以每一行加一個commanButton,在它的action method中調用dataModel的getRowData()方法來得到該行的數據,把數據保存在一個request范圍的bean里面,再轉向到另一個頁面通過可編輯表單來顯示該bean的內容,在那里就可以修改、提交了。由于是使用了forward方式轉向,所以url顯示的頁面還是數據顯示的那個頁面,只要一刷新,就又回到數據顯示那一頁而不是修改那一頁了;如果不想修改,按一下瀏覽器的后退按鈕,雖然回到了數據顯示的那一頁,但上面的 commandButton已經失效,例如點擊修改按鈕,沒有任何反應,必須把那一頁刷新一下再點才有效。

為了解決這個問題,我采用了URL來傳遞參數的方法。通過在URL中指定ID來說明要修改的是哪個對象,在修改頁面的backing bean的構造函數中,讀取URL參數來獲得ID,然后通過查詢數據庫得到該對象的其他內容,再顯示在頁面上。這樣就可以刷新,可以后退。

3)新增。新增跟修改可以用同一個頁面來顯示,只是commandButton對應不同的action method,例如“修改”按鈕對應的是update,“新增”按鈕對應的是create,在兩個method里分別使用數據庫的update語句和 insert語句即可。新增的時候是沒有ID的,修改的時候則已經有了ID。

4)刪除。在顯示數據的dataTable里,每行可以添加一個commandButton,在它的action method里,讀取該行數據,得到ID后執行SQL的DELETE語句即可,比較簡單。

無論是做什么,都離不開三個東西:頁面,配置文件,Backing Bean。頁面是表現層的東西,負責把頁面上的東西與Backing Bean聯系起來。配置文件則指定在頁面上使用的Backing Bean的名字、類、使用范圍,還有導航規則(Navigation Rules)。Backing Bean就是程序的邏輯部分了。即使實現最簡單的功能,例如顯示某個變量的值,這三個東西都是必不可少的。

修改頁面的時候,雖然不用重啟服務器,但必須在新的session里才能看出效果來,最簡單的辦法就是把瀏覽器關掉,打開一個新的,查看結果。修改了配置文件和backing bean 就必須重啟服務器了。所以調試JSF是很麻煩的。 

【編輯推薦】

  1. JSF標記與JSTL標記混合使用
  2. 簡單介紹JSF生命周期
  3. 升級JSF1.2的艱難之旅
  4. 簡述學習JSF小記
  5. JSF應用程序的生命周期
責任編輯:佚名 來源: JavaEye
相關推薦

2010-09-26 17:21:07

2010-09-10 09:55:13

SQL參數變量

2009-06-01 09:30:51

JSF2.0FaceletsAjax4JSF

2009-09-23 17:56:45

JSF入門

2010-06-09 09:15:58

JSF 2Ajax組件

2009-06-25 11:11:25

控制JSF切入點

2015-09-08 10:16:41

Java參數按值傳遞

2012-02-21 14:04:15

Java

2023-03-29 23:23:00

MyBatis參數框架

2009-06-26 13:48:57

G4JSFGWTJSF

2009-06-26 14:06:08

JSF基礎框架

2017-12-05 08:53:20

Golang參數傳遞

2009-09-04 11:00:13

通過C#引用傳遞

2011-03-16 16:06:46

iptables日志MySQL

2021-07-12 06:23:38

抓包gRpcRPC 框架

2009-12-17 17:04:09

Ruby函數參數傳遞

2021-09-06 07:45:08

LinuxLinux內核

2009-06-23 16:22:23

JSF能否

2009-06-22 14:13:08

JSF入門

2009-06-23 13:01:04

JSF應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美综合视频在线 | 欧美乱码精品一区二区三区 | www.99精品| 91久久国产综合久久91精品网站 | 精品伊人 | 97人人澡人人爽91综合色 | 国产精品精品视频一区二区三区 | 精品日韩欧美一区二区 | 精品福利在线 | 中文在线一区 | 91直接看| 黄色三级免费 | 成人亚洲片 | 亚洲一区二区 | 亚洲国产成人精品久久 | 国产精品无码永久免费888 | 国产精品自拍啪啪 | 国产成人精品免费 | 国产伦精品一区二区三毛 | 9999在线视频 | 精品一区二区三区不卡 | 一级免费看片 | 久久尤物免费一区二区三区 | 国产精品国产三级国产aⅴ无密码 | 一区二区在线不卡 | 亚洲成人免费视频在线观看 | 成人在线视频免费观看 | 国产成人精品视频在线观看 | 99爱在线免费观看 | 在线观看特色大片免费网站 | 亚洲一区视频 | 久久久久久91 | 欧美天堂在线观看 | 午夜一区| 国产精品免费一区二区三区四区 | 亚洲第一视频网 | 天天射天天操天天干 | 中文字幕一区二区三区精彩视频 | 99精品国产一区二区青青牛奶 | 国产999在线观看 | 在线免费观看黄视频 |