--register.htm--
<form action="register.jsp">
input your name:<input type="text" name="userName">
<br>
input your passwd:<input type="password" name="passwd">
<br>
input your age:<input type="text" name="age">
<br>
<input type="submit">
</form>
--register.jsp--
<%@ page contentType="text/html;charset=gb2312" language="java"%><jsp:useBean id="user" scope="page" class="com.jspdev.ch3.TestBean"/> 
<jsp:setProperty name="user" property="*"/><html>
<body>
注册成功:<br>
<hr>
使用BEAN属性方法:<br>
用户名:<% =user.getUserName() %><br>
密码:<% =user.getPasswd() %><br>
年龄:<% =user.getAge() %><br>
</body>
</html>
--TestBean.java--
package com.jspdev.ch3;public class TestBean {

public String userName;
public String passwd;
public int age;

public void setUserName(String name) {
this.userName = name;
}

public void setPasswd(String passwd) {
this.passwd = passwd;
}

public String getUserName() {
return userName;
}

public String getPasswd() {
return passwd;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}
}
错误信息:/testbean/register.jsp(3,0) The value for the useBean class attribute com.jspdev.ch3.TestBean is invalid.BEAN所在目录:\testbean\WEB-INF\classes\com\jspdev\ch3\
这是我照书上写的,可是在IE里面却不能运行
请问各位高手,应该如何修改一下我的代码才能正确调用BEAN

解决方案 »

  1.   

    俺看了半天没看出啥毛病啊,俺也做了这个例子,好用的.你运行TestBean.java了嘛?要运行TestBean.java才会产生TestBean.class,才会生效啊.还有,你发的代码<% =user.getUserName() %>感觉<%和=之间有空格,不知道是不是你转发的问题,<%和=之间是没有空格的,应该连写
      

  2.   

    TestBean.java已经编译了
    目录结构也是正确的
    <%和=之间也已经连写了
    但错误依旧补充一点,我用的是TOMCAT5.0
      

  3.   

    可能还是目录的问题,如果你的站点根目录在\testbean就应该没有问题了,估计是你现在站点的根目录在\testbean的上一级目录上,请求路径为http://127.0.0.1/testbean,这样在你的站点根目录里就没有web-inf文件夹,所有提示类路径不正确。最好把你的server.xml里边的
    <host>
    <context>
    ...
    </context>
    </host>
    片断贴出来看看。我估计是这里的问题。
      

  4.   

    看这里
    错误信息:/testbean/register.jsp(3,0) The value for the useBean class attribute com.jspdev.ch3.TestBean is invalid.
    register.jsp不再根目录里
    BEAN所在目录:\testbean\WEB-INF\classes\com\jspdev\ch3\
    所以你的WEB-INF文件夹还是没再站点根目录里边。
    如果是这样就对了。
    BEAN所在目录:\WEB-INF\classes\com\jspdev\ch3\
      

  5.   

    重起TOMCAT吧,俺对了N遍了,没看出啥毛病啊,眼睛都花了,应该不是代码问题吧.TOMCAT倒是老爱出毛病,所以俺就老重起,也是一招啊.也可能是TOMCAT版本和JDK版本不协调.实在帮不上啥了.等待高人吧
      

  6.   

    除了register.jsp输出表达式的语法,源码没有问题,我可以正确地跑通,但不是在Tomcat5.0.<%@ page contentType="text/html;charset=gb2312" language="java"%><jsp:useBean id="user" scope="page" class="com.jspdev.ch3.TestBean"/> 
    <jsp:setProperty name="user" property="*"/><html>
    <body>
    注册成功:<br/>
    <hr>
    使用BEAN属性方法:<br/>
    用户名:<%= user.getUserName() %><br/>
    密码:<%= user.getPasswd() %><br/>
    年龄:<%= user.getAge() %><br/>
    </body>
    </html>
      

  7.   

    用 RESIN 吧更简单,什么也不用管,自动编译
      

  8.   

    <input type="text" name="age">传过来的是一个字符串(String)的值,而你的TestBean里把age 却定义成了整型(int),这回知道原因了吧.
    修改的方法有两种;
    1 把TestBean里的age 定义成String 类型;
    2 把<input type="text" name="age">传过来的值强行转化成int 类型.
    例如:
    public void setAge(String age) {
     try 
     {
       this.age=java.lang.Integer.parseInt(age);
     }
     catch(NumberformatException e)
     {
       this.age=0;
     } 
    }
      

  9.   

    个人觉得楼上说的有一部分是对的,age应该设为string。不过不设为string应该会出另外的错误javax.servlet.ServletException: com.jspdev.ch3.TestBean.getAge()Ljava/lang/String;这个是我自己用tomcat5测试的结果。还是觉得楼主可能是目录设置的问题。检测一下你\testbean\WEB-INF\classes\com\jspdev\ch3\下面有没有TestBean.class
      

  10.   

    用搂主的代码,我是了,只要输入是数字,就没问题,最好是在客户端用javascript判断一下是不是数字,或者在服务器端抛出个异常,处理一下拙见!