現(xiàn)在開始說JSF的優(yōu)勢(shì)。一個(gè)一個(gè)的說,最后整理的時(shí)候再分主次吧,現(xiàn)在先就針對(duì)上面的幾個(gè)問題來說。
1.URL到action method


在JSF中,我們寫一個(gè)按鈕,發(fā)出請(qǐng)求并執(zhí)行某個(gè)action的某個(gè)方法是這樣做的:
<h:form>
    
<h:inputText value="#{someAction.text1}"/>
    
<h:commandButton value="執(zhí)行" action="#{someAction.method1}"/>
</h:form>


點(diǎn)擊按鈕的時(shí)候執(zhí)行someAction的method1這個(gè)方法。表單提交到什么URL,怎么調(diào)用到SomeAction.method1,都不需要我們關(guān)心。再看一個(gè)例子也許你會(huì)很吃驚:
<h:form>
    
<!--循環(huán)someAction中的users集合-->
    
<ui:repeat value="#{userAction.users}" var="u">
        
<h:commandButton value="刪除" action="#{userAction.remove(u)}"/><!--看到這個(gè)方法調(diào)用,你是否很吃驚呢?-->
    
</ui:repeat>
</h:form>


userAction這個(gè)bean的實(shí)現(xiàn)類里面有一個(gè)remove方法,接收一個(gè)User類型的參數(shù)。在頁面上,循環(huán)過程中,我們直接讓按鈕的action="#{userAction.remove(u)}",于是點(diǎn)擊按鈕的時(shí)候后臺(tái)的action對(duì)象能夠正確的接收到你要?jiǎng)h除的User對(duì)象。那么前后端參數(shù)是怎么傳遞的呢?User對(duì)象被放在什么地方了呢?不需要我們關(guān)心。可以看到,上面的代碼幾乎沒有HTTP細(xì)節(jié)相關(guān)的內(nèi)容。