没人回答吗?觉的是很常见的问题啊~~
自己考虑了一些,希望高手跟进
阐述请求的生命周期
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSFIntro10.htmlwp122161
其中有将请求来源分类,Faces request,跟Non-Faces request,对后者,他只提到如何设置web。xml,通过后缀名俘获请求(.faces),开始生命周期,没提怎么直接转行为方法
与struts的对比
http://www.jdon.com/idea/jsf-struts.htm
通过对比来理解jsf,有struts概念的,看这篇文理解jsf会容易些。
看完感觉更加没希望了,既然jsf更像swing开发,要通过source,产生event激活动作,应该是脱离不了客户端界面了。
想象下如果swing要将按钮提供的功能给外部程序用,只能用另外的通讯机制,rmi或socket监听,调用业务方法。swing component本身并不适合做外部接口(当然可以类似桌面开发,用api查找windowID获取控件发送click消息,模拟用户点击……只能说不合适)
题外话:如果要代码重用,jsf的action也应该只是business delegate controller,真正的代码都放在业务方法里。
用这个图描述:http://www-128.ibm.com/developerworks/cn/java/j-jsf1/figure2.gif
最后,说下我想到的解决办法
1、模拟用户点击的方法。你可以将客户端input页面保存为html,将form的method改成get,获取实际的url,毕竟jsf所谓的事件驱动还是通过form submit达成,我试过,这会多些jsf产生的hidden字段,看上去很不爽
(h:form 不支持 method属性----我觉的这已经暗示了不建议通过输入url调用方法的事实)
2、用servlet展现这类接口,或者跟struts混用~逼急了只好这样:~[