用struts 中的validation,死活不肯验证啊,求助啊,急死了

lmning 2008-03-18 09:55:00
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="loginForm" type="com.lmning.struts.form.LoginForm" />


</form-beans>

<global-exceptions />
<global-forwards />
<action-mappings>
<action attribute="loginForm" input="/login.jsp"
name="loginForm" parameter="method" path="/login" scope="request"
type="com.lmning.struts.action.LoginAction" validate="true">
<forward name="login_success" path="/login_success.jsp" />
<forward name="login_failure" path="/login_failure.jsp" />
<forward name="error" path="/error.jsp" />
</action>

</action-mappings>

<message-resources
parameter="com.lmning.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>



validator.xml没动

validation.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN" "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
<form-validation>
<formset>
<form name="loginForm">
<field property="name" depends="required">
<arg0 key="loginForm.name" />
</field>
<field property="password" depends="required">
<arg0 key="loginForm.password" />
</field>
</form>
</formset>
</form-validation>


资源文件:

#Struts Validator Error Messages
errors.required={0} \u662f\u5fc5\u586b\u5185\u5bb9.
name=name


loginForm如下:

/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.lmning.struts.form;

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

/**
* MyEclipse Struts
* Creation date: 03-18-2008
*
* XDoclet definition:
* @struts.form name="loginForm"
*/
public class LoginForm extends ValidatorActionForm {
/*
* Generated fields
*/

/** password property */
private String password;

/** name property */
private String name;

/*
* Generated Methods
*/

/**
* Method validate
* @param mapping
* @param request
* @return ActionErrors
*/
/*public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if(name==null||name.equals("")){
errors.add("name",new ActionMessage("name.null"));
}
if(password==null||password.equals("")){
errors.add("password",new ActionMessage("password.null"));
}
return errors;
return null;
}*/

/**
* Method reset
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
}

/**
* Returns the password.
* @return String
*/
public String getPassword() {
return password;
}

/**
* Set the password.
* @param password The password to set
*/
public void setPassword(String password) {
this.password = password;
}

/**
* Returns the name.
* @return String
*/
public String getName() {
return name;
}

/**
* Set the name.
* @param name The name to set
*/
public void setName(String name) {
this.name = name;
}
}


loginActin如下:

/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.lmning.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import com.lmning.po.Users;
import com.lmning.service.UserService;
import com.lmning.struts.form.LoginForm;

/**
* MyEclipse Struts
* Creation date: 03-18-2008
*
* XDoclet definition:
* @struts.action path="/login" name="loginForm" input="/login.jsp" parameter="method" scope="request" validate="true"
* @struts.action-forward name="success" path="/login_success.jsp"
* @struts.action-forward name="failure" path="/login_failurt"
*/
public class LoginAction extends DispatchAction {
/*
* Generated Methods
*/

/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
String name=loginForm.getName();
Users user=null;
UserService service=new UserService();
user=service.getUser(name);
//System.out.println(user.getId()+":"+user.getName()+":"+user.getPassword());
if(user!=null&&user.getName().trim().equals(loginForm.getName())&&user.getPassword().trim().equals(loginForm.getPassword())){
return mapping.findForward("login_success");
}
else return mapping.findForward("login_failure");
}
}


我是按照书上一步一步来的,就是死活不验证,我搞了一大晚上,大哥大姐们,帮我看看啊?
...全文
60 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lmning 2008-03-19
  • 打赏
  • 举报
回复
还是不行,我把public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if(name==null ¦ ¦name.equals("")){
errors.add("name",new ActionMessage("name.null"));
}
if(password==null ¦ ¦password.equals("")){
errors.add("password",new ActionMessage("password.null"));
}
return errors;
return null;
注释起来的,

ValidatorForm,ValidatorActionForm
login ,loginForm各处都改过,还是不验证,点提交就跳到登陆失败或者成功页面!
yojiwei 2008-03-19
  • 打赏
  • 举报
回复
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if(name==null ¦ ¦name.equals("")){
errors.add("name",new ActionMessage("name.null"));
}
if(password==null ¦ ¦password.equals("")){
errors.add("password",new ActionMessage("password.null"));
}
return errors;
return null;


name.null资源文件里面要跟这个名字是一样的。
你这个方法到底返回什么值啊,当然只需要返回errors就可以了。
forestking_xx 2008-03-19
  • 打赏
  • 举报
回复
对于ValidatorForm(即扩展自validatorForm的类), validate框架(validate.xml文件中)<form>的name属性对应的是
(struts-config.xml文件中)<action>属性的那么属性,但是,对于ValidatorActionForm,<form>的name属性是
对应<action>的path属性的。你的类是扩展自ValidatorActionForm所以,这里要用path。另外,validate框架是不能用于
ActionForm的。
forestking_xx 2008-03-19
  • 打赏
  • 举报
回复
<form name="loginForm"> ,
你把这个改成 <form name="/login">
bluemigrant 2008-03-19
  • 打赏
  • 举报
回复
我看你的代码发现2个地方跟我所了解的不一样:

1.如果你要用 验证 框架进行验证的话,在loginForm 中的 validate 方法中就不需要写具体的验证方法,而是写一段代码去调用 validator.xml 中的验证规则,具体代码可以去网上找一下。
2.你的form 类是继承自 ValidatorActionForm ,如果用这种form,需要在 validator.xml中给定调用这个form的action的名字,具体配置方法网上也有,可以去查一下
forestking_xx 2008-03-19
  • 打赏
  • 举报
回复
点提交就跳到登陆失败或者成功页面!
这句话不是很理解。。
什么时候到登录失败,什么时候到成功?
另外, 验证完以后,会有error 变量存到request中去,要在页面上调用<html:errors/>显示出来。
你说的没有验证,是不是因为你没有看到出错信息?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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