Java,快速开发,似乎是绝对不相关的两个词。
J2EE,快速开发,更是似乎没可能。
可是,Seam 1.2就使得快速原型开发,在Java和J2EE成为可能。
而且,这个可能里,还包含了Ajax、Richface等元素。更不少EJB3.0、JSF等核心。
如果建好了表,Seam 1.2可以在五分钟内,生成全部代码。包括登录、权限、查询、增加、删除、修改、分页、Table排序、主从表、支持Ajax、使用到了Richface的代码。Richface组件,提供web里的Toolbar、Model Dialog(Panel)、Drag等。
Seam所生成的查询、维护界面,很雅致,^_~~。
步骤:
1. 下载Seam 1.2
解压缩
2. 下载Jboss 4.0.5(EJB3.0)
安装
3. 从Command进入Seam 1.2
如 cd jboss-seam-1.2.1.GA
然后设置项目,如seam setup,具体参考jboss-seam-1.2.1.GA/doc/reference/en/pdf下的seam_reference.pdf
4. seam setup后,seam new-project,建立项目
比如c:/projects/testproject
这个项目,在Eclipse里,new java project就加上了
项目的关键目录
resources下包括web-inf、meta-inf、各类配置xml和message.properties等文件
src下包括java程序
view下包括页面程序,是xhtml格式的
5.根据数据库的表生成代码,运行seam generate-entities命令
表里要定义pk和fk。Seam会根据定义的pk,
生成实体类里的@ID或者组合PK类。
如果有FK,就会生成主从表的维护界面。比如订单,会自动生成集成订单表头和明细的查询界面,为选择的订单主表增加订单明细。
6.登录和权限控制
Seam生成了Authenticator.java程序,要在里面public boolean authenticate()方法里增加用户名和密码的验证逻辑代码。
Seam生成了login.xhtml,会调用Authenticator. authenticate()来验证登陆信息。
用户名等信息存放在Identity类里面,系统可以随时获得session里的Identity,方法是
@In
Identity identity;
每个页面可以设置为登录才可以访问,只需要在页面对应的.page.xml里,设置需要login。如
<page login-required="true" >
</page>
7. 查询和分页
xxxList.xhtml是自动生成的查询页面。上部是查询条件,中间是查询结果,下面是分页和增加等按钮。
所有查询条件的参数都定义在xxxList.page.xml中,如
<page login-required="true">
<param name="firstResult" value="#{syCtrlFieldList.firstResult}"/>
<param name="fldName" value="#{syCtrlFieldList.syCtrlField.id.fldName}"/>
m name="fldLastSyncBy" value="#{syCtrlFieldList.syCtrlField.fldLastSyncBy}"/>
</page>
这样,Seam就会在页面跳转的时候,自动传递参数。比如
<s:link view="/#{empty from ? 'SyCtrlField' : from}.xhtml"
value="Select"
id="syCtrlField">
<f:param name="syCtrlFieldFldName"
value="#{syCtrlField.id.fldName}"/>
<f:param name="syCtrlFieldFldTblName"
value="#{syCtrlField.id.fldTblName}"/>
</s:link>
在xxxList.java里,具体提供对查询条件和分页的支持
里面的private static final String[] RESTRICTIONS,定义查询的sql和页面可能传入的查询条件。
页面里的<rich:dataTable显示查询结果,其中<s:link可以对列排序。
总之,定义好了表结构,seam 1.2几分钟就可以生成全部的代码。包括一般的数据库程序需要的功能。做一个进销存那样的原型,也只要几分钟就可以了。
唯一要作的,是菜单,和页面的多语言(中文)