JSF的commandButton、commandLink、outputLink用法小結(jié)<轉(zhuǎn)>

          comanndButton和commandLink: 

          h:commandButton 
          可以提交表單,但不能傳遞參數(shù) 
          h:commandLink 
          可以提交表單,又能傳遞參數(shù),但是以鏈接的形式展現(xiàn) 

          commandLink必須要在一個from中。 

          comanndButton和commandLink要在一個from中才能提交表單內(nèi)容。 

          會發(fā)送回本頁面,并觸發(fā)JSF的生命周期,比如:重建組件樹、應(yīng)用請求值等,因此,允許設(shè)置actionListener和action屬性,這樣他們可以很輕松完成強大的功能。 

          Java代碼  收藏代碼
          1. <h:commandButton actionListener="#{actionListener.check}"; value="送出"; action="#{user.check}" />  



          actionListener 響應(yīng)的一個事件,當(dāng)然這個和js中的事件不一樣.actionListener="#{actionListener.check}"響應(yīng)的是服務(wù)器端的事件actionListener類的check方法. 

          action 用過STRUTS的都知道,提交后執(zhí)行的方法.當(dāng)然在SRTUTS中action="URL",而這里是一個user類的check方法. 

          不足在于:如果重建組件樹的成本比較高(比如:當(dāng)前頁面顯示一個數(shù)據(jù)表格),而這些組件對于即將跳轉(zhuǎn)到的頁面沒什么用時,就應(yīng)該考慮使用outputLink了。 

          Java代碼  收藏代碼
          1. <h:commandLink action="#{user.testLink}"><f:verbatim>增加</f:verbatim></h:commandLink>  



          另外:如果需要傳遞參數(shù)<f:param.../>,使用commandLink 
          在action或actionListener中獲取<f:param.../>:

          Java代碼  收藏代碼
          1. FacesContext ctx = FacesContext.getCurrentInstance();   
          2. int productId = Integer.parseInt((String)ctx.getExternalContext().getRequestParameterMap().get("productId"));   



          outputLink 

          比起前兩個來說,他相當(dāng)?shù)妮p量級了。他會直接產(chǎn)生一個<a href=""></a>鏈接,跳轉(zhuǎn)到相應(yīng)的頁面,因此沒有進(jìn)入JSF生命周期的額外開銷,跟我們直接寫一個html的鏈接沒什么區(qū)別。 

          如果需要傳遞參數(shù),嵌入<f:param name="a" value="b"/>就可以了,當(dāng)然這里的value可以用表達(dá)式來表示,比如value="#{param.productId}",用起來是相當(dāng)方便的。

          Java代碼 復(fù)制代碼
          1. <h:outputLink value="productEdit.faces">    
          2. <h:outputText value="編輯"/>    
          3. <f:param name="productId" value="#{item.productId}"/>    
          4. </h:outputLink>  



          其效果為<a href="..jsf?productId=..."></a> 

          h:commandButton、h:commandLink 和h:outputLink的差別在于:h:outputLink沒有進(jìn)入JSF的生命周期,而h:commandLink和h:commandButton都要進(jìn)入JSF的生命周期.

          posted on 2011-07-25 10:22 七孑 閱讀(8297) 評論(1)  編輯  收藏 所屬分類: Java web技術(shù)

          評論

          # re: JSF的commandButton、commandLink、outputLink用法小結(jié) 2013-06-20 17:12 sss

          很不錯~~  回復(fù)  更多評論   

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 大荔县| 临湘市| 濮阳市| 丰镇市| 五大连池市| 北川| 大姚县| 盐源县| 宝坻区| 中阳县| 桐庐县| 屏山县| 安宁市| 玉田县| 旌德县| 城口县| 华蓥市| 桑植县| 松潘县| 都昌县| 游戏| 剑川县| 孟州市| 桦甸市| 万宁市| 江源县| 道孚县| 延寿县| 蓬溪县| 石景山区| 正安县| 东辽县| 福贡县| 兴山县| 白城市| 六安市| 潼南县| 麻栗坡县| 静海县| 凤城市| 金坛市|