現在開始說JSF的優勢。一個一個的說,最后整理的時候再分主次吧,現在先就針對上面的幾個問題來說。
1.URL到action method
在JSF中,我們寫一個按鈕,發出請求并執行某個action的某個方法是這樣做的:
<h:form>
<h:inputText value="#{someAction.text1}"/>
<h:commandButton value="執行" action="#{someAction.method1}"/>
</h:form>
點擊按鈕的時候執行someAction的method1這個方法。表單提交到什么URL,怎么調用到SomeAction.method1,都不需要我們關心。再看一個例子也許你會很吃驚:
<h:form>
<!--循環someAction中的users集合-->
<ui:repeat value="#{userAction.users}" var="u">
<h:commandButton value="刪除" action="#{userAction.remove(u)}"/><!--看到這個方法調用,你是否很吃驚呢?-->
</ui:repeat>
</h:form>
userAction這個bean的實現類里面有一個remove方法,接收一個User類型的參數。在頁面上,循環過程中,我們直接讓按鈕的action="#{userAction.remove(u)}",于是點擊按鈕的時候后臺的action對象能夠正確的接收到你要刪除的User對象。那么前后端參數是怎么傳遞的呢?User對象被放在什么地方了呢?不需要我們關心。可以看到,上面的代碼幾乎沒有HTTP細節相關的內容。