JSF的commandButton、commandLink、outputLink用法小結

comanndButton和commandLink
會發送回本頁面,並觸發JSF的生命週期,比如:重建組件樹、應用請求值等,因此,允許設置actionListener和action屬性,這樣他們可以很輕鬆完成強大的功能。不足在於:如果重建組件樹的成本比較高(比如:當前頁面顯示一個數據表格),而這些組件對於即將跳轉到的頁面沒什麼用時,就應該考慮使用outputLink了。
另外:如果需要傳遞參數<f:param.../>,使用commandLink
在action或actionListener中獲取<f:param.../>:
FacesContext ctx = FacesContext.getCurrentInstance();
int productId = Integer.parseInt((String)ctx.getExternalContext().getRequestParameterMap().get("productId"));
 
outputLink
比起前兩個來說,他相當的輕量級了。他會直接產生一個<a href=""></a>鏈接,跳轉到相應的頁面,因此沒有進入JSF生命週期的額外開銷,跟我們直接寫一個html的鏈接沒什麼區別。
如果需要傳遞參數,嵌入<f:param name="a" value="b"/>就可以了,當然這裏的value可以用表達式來表示,比如value="#{param.productId}",用起來是相當方便的。
<h:outputLink value="productEdit.faces">
<h:outputText value="編輯"/>
<f:param name="productId" value="#{item.productId}"/>
</h:outputLink>
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章