如何实现DynaValiatorForm的动态验证?

[复制链接]
查看11 | 回复9 | 2006-10-19 22:45:48 | 显示全部楼层 |阅读模式
请教大虾,我在用myeclipse做一个登陆的界面,需要实现服务器验证,我打算采用DynaValiatorForm的动态验证,据说,这个可以自动生成ActionForm对象,并具有验证功能。
首先,我在struts-config.xml文件中定义了






然后,在struts-config.xml文件中的里面添加了




当然,我还在struts-config.xml文件中加上


与此同时,我在validation.xml中添加了


















mask

^[0-9a-zA-Z]*$





另外,我在application.properties文件中也添加了
logon.username.msg={0} is required

logon.password.msg={0} is required

logonForm.username=username

logonForm.password=password

还有,我的登陆界面上面写


Login:
Password:




为什么提交登陆界面的时候我没输入任何东西它不报错?在登陆界面中的也不出现错误?好象根本没实现服务器验证?究竟错在哪里?
回复

使用道具 举报

千问 | 2006-10-19 22:45:48 | 显示全部楼层
去看看标签的用法,然后添加在你的jsp页面上
回复

使用道具 举报

千问 | 2006-10-19 22:45:48 | 显示全部楼层
首先谢谢你的答复,不过这是服务器端的验证,而不是客户端的验证啊,我加上
也是没有任何效果,当然,不可能再加上
onsubmit="return validateLogonForm(this)"了吧?
是服务器端的验证,而不是客户端的验证啊,
究竟问题错在哪里?有谁能帮我啊?
回复

使用道具 举报

千问 | 2006-10-19 22:45:48 | 显示全部楼层
哦,这就奇怪了, 如果只是服务端验证的话你的代码似乎都全了。
发布以及调用过程都没服务端错误信息?仅仅验证没有被调用到?
回复

使用道具 举报

千问 | 2006-10-19 22:45:48 | 显示全部楼层
我刚才按照你的需求试验了一下成功的?(struts1.2,tomcat5.5, jdk1.5)你是不是哪里搞错了?如果需要我可以把代码都贴出来。
回复

使用道具 举报

千问 | 2006-10-19 22:45:48 | 显示全部楼层
谢谢super-zzw兄弟的答复,由于采用DynaValiatorForm的动态验证不出现错误提示,我
尝试自己写一个ActionForm通过重新定义validate()方法来实现服务器端验证,但也是不出现错误提示,
下面是LogonForm.java里面的部分代码:

public ActionErrors validate(ActionMapping mapping, HttpServletRequest request)

{

ActionErrors errors = new ActionErrors();

if(username.trim().equals("&quot

)

errors.add(ActionErrors.GLOBAL_ERROR,new ActionError("errors.required&quot

);

return errors;

}
为什么还是实现不了服务器验证啊?我使用的是eclipse3.2+myeclipse5.0M2+tomcat5.5.17
我想,会不会已经服务器验证了,但验证错误没显示出来?如果是验证错误没显示出来,该怎么才让它现实出来?
回复

使用道具 举报

千问 | 2006-10-19 22:45:48 | 显示全部楼层
你可以log一下,看看服务端的validate方法到底有没有调用到,看看errors到底有没有add。
还有我觉得挺奇怪的是你的mapping写法


里面的.login和.index是什么?我好像没有看到过这种写法啊?
按照一般的写法应该是login.jsp, index.jsp之类的啊。
回复

使用道具 举报

千问 | 2006-10-19 22:45:48 | 显示全部楼层
谢谢super-zzw兄弟,一般来说写法是login.jsp、index.jsp之类的,但如果你使用了Tiles配置资源管理后可以用.login、.index取代,如何log一下,看看服务端的validate方法到底有没有调用到,看看errors到底有没有add?能详细说说吗?
回复

使用道具 举报

千问 | 2006-10-19 22:45:48 | 显示全部楼层
呵呵,怪不得呢, 你的tiles name倒是定义的别具一格啊。
你可以用log4j, 配置一下然后在代码中调用就可以了。或者如果你不想麻烦,就直接在方法的开头以及程序中想要调试的点写个System.out.println(...),然后到tomcat的logs目录下面看文件中的输出信息。
回复

使用道具 举报

千问 | 2006-10-19 22:45:48 | 显示全部楼层
谢谢super-zzw兄弟,
1> 用log4j时候控制台报警告log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).

log4j:WARN Please initialize the log4j system properly.
哪里出错?
2> System.out.println(...)在采用DynaValiatorForm的动态验证的时候在哪里添加跟踪error?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行