本人现在学struts2的数据校验,看书上的例子,自己动手不知道为什么老报 No result defined for action com.action.ValidateAction and result input 和 No result defined for action com.action.ValidateAction and result success错误 求高手帮下!源代码:ValidateAction.java(包名com.action)package com.action;import com.opensymphony.xwork2.ActionSupport;public class ValidateAction extends ActionSupport{
private String name;
private String pass; public String execute() throws Exception {
return SUCCESS;
} public void validate() {
if (name == null || name.length() < 6 || name.length() > 15) {
addFieldError("name", "用户姓名不符合要求,请重新输入!");
}
if (pass == null || pass.length() < 6 || pass.length() > 20) {
addFieldError("pass", "密码长度不符合要求,请重新输入!");
}
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPass() {
return pass;
} public void setPass(String pass) {
this.pass = pass;
}
}
struts.xml文件<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<include file="struts-default.xml" />
<package name="convert" extends="struts-default" namespace="/bbs">
<action name="validate" class="com.action.ValidateAction">
<result name="input">/validate.jsp</result>
<result name="success">/success.jsp</result>
</action>
</package>
</struts>    success.jsp页面<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>添加成功页面</title>
</head>
<body>
<center>
<div>
<h2>
登录成功!
</h2>
<br />
您的信息如下:
<br />
用户名:
<s:property value="name" />
<br />
密码:
<s:property value="pass" />
</div>
</center>
</body>
</html>validate.jsp页面<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>validate数据校验</title>
</head>
<body>
<center>
<div style="color: red;">
<s:fielderror />
</div>
<s:form action="validate.action" method="post" namespace="/bbs">
<s:textfield name="name" label="姓名" />
<s:password name="pass" label="密码" />
<s:submit value="提交" />
</s:form>
</center>
</body>
</html>
求高手帮下,谢谢!

解决方案 »

  1.   

    想用Struts2的验证,就必须指定input结果界面,因为出错了要让它返回的,报的错误也已经很详细了,就是出错找不到要返回的input界面,配置一个<result name="input">/login.jsp</result>就OK了
      

  2.   

    我用的是数据校验,返回的是input视图,代码中已经指明
     <result name="input">/validate.jsp</result>
      

  3.   

    return SUCCESS和xml里的success大小写是不是得保持一致啊!
      

  4.   

    你在ACTION里的public void validate() 这个方法里,没有指明返回类型
    public String validate(){}这样,然后在方法里return 返回SUCCESS或INPUT
      (PS:建议 最不要使用 validate这样的字眼,因为框架里已经有这样的方法了)
      

  5.   

    struts 里每个方法都有一个返回值String 类型。
      

  6.   

    但是书上就这么写的啊 我用<ActionName>-validation.xml验证就能通过的啊 郁闷 书上说返回的话只需要返回input视图,不要在action中返回input啊
      

  7.   

    另外 validate()方法不能更改类型,只能是void类型啊
      

  8.   

    <s:form action="bbs/validate.action" method="post">
      

  9.   

    错误的时候 name 是input  在 struts.xml 设置上就ok了
      

  10.   

    对,return SUCCESS和xml里的success要保持一致,因为SUCCESS是一个已经定义好的属性,你只需要在xml中直接return SUCCESS;就可以了,而success是你在xml中定义的,需要加return "success";
      

  11.   

    你用了S2验证框架,所以要默认Struts.XML里面配置RESULT name为INPUT的节点。我是这么认为的。