Struts1中validator为什么不起作用?

LiuMelody 2009-06-05 03:53:40
我用的是Eclipse 3.2、MyEclipse 5.0
自动生成的struts.jar、commons-validator.jar、jakarta-oro.jar
自动生成的validator-rules.xml,里面用的是validator_1_1_3.dtd
我自己写了个validation.xml,也用用的是validator_1_1_3.dtd
查看过这两个帖子:http://topic.csdn.net/t/20060508/09/4735225.html、http://hi.baidu.com/luxiaoyi/blog/item/e302f0132463b0065aaf5384.html
不清楚为什么会不生效(就是我在表单中不输入任何值,然后submit,它就直接转到成功页面去了),是不是也是因为jar包不匹配?但是这些jar包是由Eclipse自动一起生成的啊。。。

具体代码如下:
======================================================================
struts-config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
<data-sources />
<form-beans >
<form-bean name="userRegistrationForm" type="struts.form.UserRegistrationForm"/>
</form-beans>

<global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="user"
input="/userRegistration.jsp"
name="userRegistrationForm"
path="/userRegistration"
scope="request"
validate="true"
type="struts.action.UserRegistrationAction" >
<forward name="success" path="/regSuccess.jsp" />
</action>
</action-mappings>

<message-resources parameter="struts.ApplicationResources" />

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml"/>
</plug-in>
</struts-config>
======================================================================
UserRegistrationForm.java:

package struts.form;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.validator.ValidatorForm;

public class UserRegistrationForm extends ValidatorForm
{
private String username;
private String password;

public String getPassword()
{
return password;
}

public void setPassword(String password)
{
this.password = password;
}

public String getUsername()
{
return username;
}

public void setUsername(String username)
{
this.username = username;
}

public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request)
{
// TODO Auto-generated method stub
return null;
}

public void reset(ActionMapping mapping, HttpServletRequest request)
{
// TODO Auto-generated method stub
}
}
======================================================================
userRegistration.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>

<html>
<head>
<title>JSP for UserRegistrationForm form</title>
</head>
<body>
<html:form action="/userRegistration">
<html:errors/><br/>
name : <html:text property="username"/><br/>
password : <html:password property="password"/><br/>
<html:submit/><html:cancel/>
</html:form>
</body>
</html>
======================================================================
UserRegistrationAction.java:

package struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import struts.form.UserRegistrationForm;

public class UserRegistrationAction extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
{
UserRegistrationForm userRegistrationForm = (UserRegistrationForm)form;

return mapping.findForward("success");
}
}
======================================================================
regSuccess.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
<title>My JSP 'regSuccess.jsp' starting page</title>
</head>

<body>
Success. <br>
</body>
</html>
======================================================================
validation.xml:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">

<form-validation>
<global>

</global>

<formset>
<form name="userRegistrationForm">
<field
property="username" depends="required">
<arg key="logonForm.username"/>
</field>
<field
property="password" depends="required,mask">
<arg key="logonForm.password"/>
<var>
<var-name>mask</var-name>
<var-value>^[0-9a-zA-Z]*$</var-value>
</var>
</field>
</form>
</formset>

</form-validation>
======================================================================
validator-rules.xml:

<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
......
======================================================================
...全文
64 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
少龙123 2009-06-10
  • 打赏
  • 举报
回复
呵呵,有时候,编辑器的缓存被引出程序的bug
LiuMelody 2009-06-10
  • 打赏
  • 举报
回复
重新做了一遍,就好了~~~晕
LiuMelody 2009-06-08
  • 打赏
  • 举报
回复
谢谢edisonwin!

我加了return super.validate(mapping,request); 这句
或者直接把整个validate方法删掉
结果还是一样。。。真是奇怪
少龙123 2009-06-06
  • 打赏
  • 举报
回复
这个方法被你重写了,改成
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request)
{
// TODO Auto-generated method stub
return super.validate(mapping,request);
}
LiuMelody 2009-06-06
  • 打赏
  • 举报
回复
谢谢bear13!

1. 我改为:
===============================
<body>
<html:javascript formName="userRegistrationForm"/>
<html:form action="/userRegistration" onsubmit="return userRegistrationForm(this);">
<html:errors/><br/>
name : <html:text property="username"/><br/>
password : <html:password property="password"/><br/>
<html:submit/><html:cancel/>
</html:form>
</body>
===============================

<body>
<html:javascript formName="userRegistrationForm"/>
<html:form action="/userRegistration" onsubmit="return validateUserRegistrationForm(this);">
<html:errors/><br/>
name : <html:text property="username"/><br/>
password : <html:password property="password"/><br/>
<html:submit/><html:cancel/>
</html:form>
</body>
===============================

都不行!还是一样,没有什么效果。

2. 加javascript是客户端验证吧,我是先验证服务器端的
bear13 2009-06-05
  • 打赏
  • 举报
回复
<html:javascript formName="userRegistrationForm"/>
<html:form action="/userRegistration" onsubmit="return userRegistrationForm(this);">
<html:errors/> <br/>
name : <html:text property="username"/> <br/>
password : <html:password property="password"/> <br/>
<html:submit/> <html:cancel/>
</html:form>

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧