appfuse运行xdoclet报错的解决

写了一个pojo,使用@spring.validator声明validation的属性,然后运行ant clean webdoclet,应该在build/appfuse/WEB-INF/下面产生validation.xml,但运行时报如下的错误:

[webdoclet] Caused by: xdoclet.XDocletException: Running XDoclet failed.: xdocle
t.template.TemplateException: Invoking method in class xdoclet.modules.spring.Sp
ringValidatorTagsHandler failed: ifFormHasFields, line=52 of template file: jar:
file:/D:/javaworld/appfuse/lib/xdoclet-1.3-SNAPSHOT/xdoclet-spring-module-1.3-SN
APSHOT.jar!/xdoclet/modules/spring/resources/validation_xml.xdt, exception: null

[webdoclet]     at xdoclet.XDocletTagSupport.generate(XDocletTagSupport.java:751
)
[webdoclet]     at xdoclet.modules.spring.SpringValidatorTagsHandler.forAllForms
(SpringValidatorTagsHandler.java:78)

在网上查询类似的错误产生原因,如下:

更大可能是因为你的业务实体POJO类中,存在循环调用
如Aclass中包含Bclass,Bclass中包含Cclass,Cclass中包含Aclass,存在一个闭环,其中一个Class无一个是
@struts.validator type="required" (这个是在pojo中些的,Form中写法不一样)
特别是在一对一双向关系设计中,容易造成这种情况。

给闭环调用类中每个pojo类至少加上一个@struts.validator type="required" 就OK了

业务允许的话,把它设计为单向的或则采用@struts.form-field将关系filed不包含到ActionForm中

我的类确实有循环调用,而且是自己引用自己(类似于树的结点),写了上面的validator也没有

起作用,最后只好用数值引用来代替对象引用~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值