AppFuse自身的生成工具

如JSP文件、DAO都可以自动生成。这样只要能够掌握AppFuse,就可以提高自己的开发效率,特别是最实用的Appgen工具,此工具是以Xdoclet和maven为主,可以动态批量生成可执行代码框架,这点确实有模板的味道:
大家可看如下示例::::

此工具可以生成一个应用,操作共分五步。

(1)在applicationContext-hibernate.xml中添加POJO的配置文件的路径。

(2)在Eclipse中运行此文件夹下的build.xml,会出现一个对话框,这个对话框会提示用户去寻找存在的POJO或者数据库的表。如果选择POJO,则.java文件必需存在于“model”类包下。假如选择表,则表在数据库里必需存在。

(3)操作到最后,会被要求输入一个应用模块名或者一个子包名。

(4)在命令提示符下,转到此目录,键入“mvn appfuse:full-source”命令,就可以自动生成文件。

这样一个应用就建好了。但要注意的是,生成文件时,要先备份一下项目,因为如果操作不慎会覆盖掉原来修改的文件。

这些文件是由模板生成的,用户可以根据需要来修改模板,如在/extras/appgen/src有生成器的源码。打开其中一个,如Form_jsp.xdt所示。

<XDtTagDef:tagDef namespace="Form" handler="org.example.antbook.xdoclet.Form TagsHandler"/><%@ include file="/common/taglibs.jsp"%>

<!--根据给定的实例名生成标题 -->

<title><fmt:message key="<XDtForm:classNameLower/>Detail.title"/></title>

<content tag="heading"><fmt:message key="<XDtForm:classNameLower/>Detail.heading"/> </content>

<!--对表单的自动生成的处理-->

<ww:form name="<XDtForm:classNameLower/>Form" action="save<XDtForm:className/>" method="post" validate="true">

<!--表示对所有的域有效 -->

<XDtForm:forAllFields>

<XDtForm:ifIsIdOrVersionField>

<ww:hidden name="<XDtForm:classNameLower/>.<XDtForm:fieldName/>" value="%{<XDtForm: classNameLower/>.<XDtForm:fieldName/>}"/>

</XDtForm:ifIsIdOrVersionField>

<XDtForm:ifIsNotIdOrVersionField>

<ww:textfield label="%{getText('<XDtForm:classNameLower/>.<XDtForm:fieldName/>')}" name="<XDtForm:classNameLower/>.<XDtForm:fieldName/>"

value="%{<XDtForm:classNameLower/>.<XDtForm:fieldName/>}" required="true"/>

</XDtForm:ifIsNotIdOrVersionField>

</XDtForm:forAllFields>

<tr>

<td></td>

<td class="buttonBar">

<input type="submit" class="button" name="save"

value="<fmt:message key="button.save"/>" />



<!--用自动生成的参数调用Javas.c.r.i.p.t -->

<input type="submit" class="button" name="delete"

οnclick="return confirmDelete('<XDtForm:className/>')"

value="<fmt:message key="button.delete"/>" />



<input type="submit" class="button" name="method:cancel"

value="<fmt:message key="button.cancel"/>" />

</td>

</tr>

</ww:form>

<!--自动生成的Javas.c.r.i.p.t脚本-->

<s.c.r.i.p.t type="text/javas.c.r.i.p.t">

Form.focusFirstElement(document.forms["<XDtForm:classNameLower/>Form"]);

</s.c.r.i.p.t>

此文件用来生成一个Form表单。代码非常通用,并且用户也不需要知道此过程是怎样实现的。如果用户想生成一些个性化的信息,只需要添加或者修改文件中的HTML标签就可以了。另外也可以看一下生成Action类的模板,代码如下。

<!--根据表单对象生成类 -->

<XDtTagDef:tagDef namespace="Form" handler="org.example.antbook.xdoclet.Form TagsHandler"/>package <XDtFormarentPackageName/>.webapp.action;

import java.util.List;

<!--添加参数引用生成的类 -->

import <XDtConfig:configParameterValue paramName="basePackageName"/>.webapp. action.BaseAction;

import <XDtPackage/packageName/>.<XDtForm:className/>;

import <XDtForm/parentPackageName/>.service.<XDtForm:className/>Manager;

public class <XDtForm:className/>Action extends BaseAction {

<!-通过参数定义变量 -->

private <XDtForm:className/> <XDtForm:classNameLower/>;

private List <XDtForm:classNameLower/>s;

private String <XDtMethodEx:idField getType="propertyName"/>;

private <XDtForm:className/>Manager <XDtForm:classNameLower/>Manager;

<!-定义get方法 -->

public void <XDtMethodEx:idField getType="setterName"/>(String <XDtMethodEx: idField getType="propertyName"/> ) {

this.<XDtMethodEx:idField getType="propertyName"/> = <XDtMethodEx:idField getType="propertyName"/>;

}

<!-定义set方法 -->

public void set<XDtForm:className/>Manager(<XDtForm:className/>Manager manager) {

this.<XDtForm:classNameLower/>Manager = manager;

}

<!-定义get方法 -->

public <XDtForm:className/> get<XDtForm:className/>() {

return <XDtForm:classNameLower/>;

}

<!-定义set方法 -->

public void set<XDtForm:className/>(<XDtForm:className/> <XDtForm:className Lower/> ) {

this.<XDtForm:classNameLower/> = <XDtForm:classNameLower/>;

}

<!-根据参数生成delete方法-->

public String delete() {

<XDtForm:classNameLower/>Manager.remove<XDtForm:className/>(String.valueOf (<XDtForm:classNameLower/>.<XDtMethodEx:idField getType="getterName"/>()));

saveMessage(getText("<XDtForm:classNameLower/>.deleted"));

return SUCCESS;

}

<!-根据参数生成set方法-->

public String edit() {

if (<XDtMethodEx:idField getType="propertyName"/> != null) {

<XDtForm:classNameLower/> = <XDtForm:classNameLower/>Manager.get <XDtForm:className/>(<XDtMethodEx:idField getType="propertyName"/> );

} else {

<XDtForm:classNameLower/> = new <XDtForm:className/>();

}

return SUCCESS;

}

<!-根据参数生成save方法-->

public String save() throws Exception {

if (delete != null) {

return delete();

}

boolean isNew = (<XDtForm:classNameLower/>.<XDtMethodEx:idField getType= "getterName"/>() == null);

<XDtForm:classNameLower/>Manager.save<XDtForm:className/>(<XDtForm:class NameLower/> );

String key = (isNew) ? "<XDtForm:classNameLower/>.added" : "<XDtForm: classNameLower/>.updated";

saveMessage(getText(key));

if (!isNew) {

return "redirect:form";

} else {

return SUCCESS;

}

}

<!-根据参数生成list列表方法-->

public List get<XDtForm:className/>s() {

return <XDtForm:classNameLower/>s;

}

<!-根据参数生成list列表方法-->

public String list() {

<XDtForm:classNameLower/>s = <XDtForm:classNameLower/>Manager.get<XDt Form:className/>s(new <XDtForm:className/>());

return SUCCESS;

}

}

在开发时,一般需要 修改的就是Action类。此类在不同的项目会需要不同的模板,最基本的模板方法已经给出。我们可以在此完成一些修改,在方法的命名上可以参考原来代码中的例子即可。
当然,如果是想对此工具作进一步的了解,做大量自定义的开发的话 ,还是需要深入学习Xdoclet和maven的奥秘的!
愿与志同道合者共勉!
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值