JSF很大的一个好处就是高集成,Struts写十几行代码的功能点,用JSF可以几行即可实现,在控件指定一下刷新块和提交后台块即可实现大量ajax前后台交互代码。
但唯一不足的是其导航能力,apache的shale项目完美解决这个问题,此项目几年前已经给apahce了结,但源码还可以弄得到,刚编译生成jar未有时间调试流程,其强大的导航三言两人语解释不完。
见dialog-config.xml部分导航代码:
<dialog name="LogOn"
start="CheckCookie">
<action name="CheckCookie"
method="#{profile$logon.check}">
<transition outcome="authenticated"
target="Exit"/>
<transition outcome="unauthenticated"
target="LogonForm"/>
</action>
<view name="LogonForm"
viewId="/profile/logon.jsp">
<transition outcome="authenticated"
target="Exit"/>
<transition outcome="create"
target="CreateProfile"/>
<transition outcome="cancel"
target="Exit"/>
</view>
<subdialog name="CreateProfile"
dialogName="EditProfile">
<transition outcome="next"
target="Exit"/>
<transition outcome="success"
target="Exit"/>
</subdialog>
<end name="Exit"
viewId="/usecases.jsp"/>
</dialog>
估计华为的BME框架大部分都是参考JSF与Shale改造(本人在华为做过一年半载的苦逼外包)。
bme样例见地址如下(这家伙牛啊,华为信息安全管得那么严都能弄得出来,小弟佩服,哦~应该是拜服):
http://wenku.baidu.com/link?url=UyXVVfm7KAukBw6nBE6jEQQZfO23RvRKaSiIFTJah3fFku1vuJTPRfDMrBHgWlXWbsq4zw105c9WrnC7I3nLbcqX0NQi3aufsu9ryym_SNq