<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
<title>请输入您的注册信息</title>
</head>
<body>
<H1>请输入您的注册信息</H1>
<s:fielderror/>
<FORM METHOD="POST" ACTION="regist.action">
用户名:<INPUT TYPE="text" NAME="name"><br>
密&nbsp;&nbsp;码:<INPUT TYPE="text" NAME="pass"><br>
年&nbsp;&nbsp;龄:<INPUT TYPE="text" NAME="age"><br>
生&nbsp;&nbsp;日:<INPUT TYPE="text" NAME="birth"><p>
<INPUT TYPE="submit" value="注册">
</FORM>
</body>
</html>这是从书上找到的例子,一运行就报空指针异常位置指向<s:fielderror/>,为什么会这样啊?下面是我的struts.xml配置
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.custom.i18n.resources" value="globalMessages"/>
<constant name="struts.i18n.encoding" value="GBK"/>    <package name="lee" extends="struts-default">        <action name="regist" class="struts.RegistAction">
            <result name="input">/content/regist.jsp</result>
            <result>/content/show.jsp</result>
        </action>    </package>
</struts>

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【toss2000】截止到2008-07-22 17:40:36的历史汇总数据(不包括此帖):
    发帖的总数量:7                        发帖的总分数:370                      每贴平均分数:52                       
    回帖的总数量:13                       得分贴总数量:2                        回帖的得分率:15%                      
    结贴的总数量:7                        结贴的总分数:370                      
    无满意结贴数:2                        无满意结贴分:70                       
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:28.57 %               无满意结分率:18.92 %                  
    敬礼!
      

  2.   

    <s:fielderror/>
    你有没有看看这个标签 封装的源代码啊 ?
    这好像不是struts自带的标签啊????
      

  3.   

     你有没有导入struts2的标签文件啊我是说页面上
      

  4.   

    我已经继承了ActionSupport我也导入了<%@taglib prefix="s" uri="/struts-tags"%> 见最上面的JSP文件
      

  5.   

    可能不是标签的问题,看一下后台的validate代码吧
      

  6.   

    你用struts2为什么还用html的标签,
    密&nbsp;&nbsp;码: <INPUT TYPE="text" NAME="pass"> <br> 
      

  7.   

    这是我的validate
    public void validate()
    {
    System.out.println("进入validate方法进行校验"); if (name != null && !Pattern.matches("\\w{4,25}", name.trim()))
    {
    addFieldError("user", "您输入用户名必须是字母和数字,且长度必须是4到25之间!");
    } if (pass != null && !Pattern.matches("\\w{4,25}", pass.trim()))
    {
    addFieldError("pass", "您输入密码必须是字母和数字,且长度必须是4到25之间!");
    }
    if (age > 150 || age <= 0)
    {
    addFieldError("age", "您输入的年龄必须是一个有效的年龄!");
    }
    Calendar end = Calendar.getInstance();
    end.set(2050, 2, 21);
    Calendar start = Calendar.getInstance();
    start.set(1900, 1, 1);
    if (birth != null&& (birth.after(end.getTime()) || birth.before(start.getTime())))
    {
    addFieldError("birth", "您输入的生日必须在一个有效的时间段内");
    }
    }
    请大家看一下,这个例子我是从李刚的struts2.0上抄下来的结果运行就不对,也不知道他到底自己运行过没有!
      

  8.   

    public void validate()
    {
    System.out.println("进入validate方法进行校验"); if (name != null && !Pattern.matches("\\w{4,25}", name.trim()))
    {
    addFieldError("user", "您输入用户名必须是字母和数字,且长度必须是4到25之间!");
    } if (pass != null && !Pattern.matches("\\w{4,25}", pass.trim()))
    {
    addFieldError("pass", "您输入密码必须是字母和数字,且长度必须是4到25之间!");
    }
    if (age > 150 || age <= 0)
    {
    addFieldError("age", "您输入的年龄必须是一个有效的年龄!");
    }
    Calendar end = Calendar.getInstance();
    end.set(2050, 2, 21);
    Calendar start = Calendar.getInstance();
    start.set(1900, 1, 1);
    if (birth != null&& (birth.after(end.getTime()) || birth.before(start.getTime())))
    {
    addFieldError("birth", "您输入的生日必须在一个有效的时间段内");
    }
    }
    这是我的validte请大家看看
      

  9.   

    首先要在 Action 中加: addActionErrorif (条件) {
      this.addActionError(“密码不正确!”);
      return INPUT;
    }然后在 页面中用 <s:actionerror /> 接收。
    <tr>
      <td>
        <s:actionerror />
      </td>
    </tr>
      

  10.   

    还有你的判断条件都有问题吧:if (name != null && !Pattern.matches("\\w{4,25}", name.trim()))
    {
    addFieldError("user", "您输入用户名必须是字母和数字,且长度必须是4到25之间!");

    应该是 : name == null 吧 
      

  11.   

    写成: if (name == null || Pattern.matches("\\w{4,25}", name.trim()))  试试
      

  12.   

    我是彻底服了,按照 无所谓 的办法,改成了actionerror 结果仍然是报NULL指针异常……是不是和我的环境有关系啊,我的是tomcat5.5.26,jdk是1.5
      

  13.   

    是环境关系啊,struts2要求JDK1.6以上啊。