现在开始说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细节相关的内容。