各位大侠,小弟初学JSP,遇到一个问题:我首先在register.html上提交一个表单并准备在register.jsp当中用Bean方法和jsp:getProperty两种方法来获取表单中的数据,但是遇到了很大的问题。我的程序如下:
-----------------------------------------------------------
register.html
-----------------------------------------------------------
<form method="get" action="register.jsp">
<table>
<tr><td>name:    <input name="userName" type="text"></td></tr>
<tr><td>password:<input name="passWord" type="password"></td></tr>
<tr><td>age:  <input name="age" type="text"></td></tr>
<tr><td><input type=submit value="submit"></td></tr>
</table>
</form>
-----------------------------------------------------
register.jsp
-------------------------------------------------------
<%@ page contentType="text/html charset=gb2312"%>
<jsp:useBean id="user" scope="page" class="userInfo.TestBean"/>
<jsp:setProperty name="user" property="*"/>              --------------------------------------<1>
<html>
<body>
register successfully! <br>                                               
<hr>
use the function of Bean.<br>
userName:<%=user.getUserName()%><br>
passWord:<%=user.getPassword()%><br>
age:     <%=user.getAge()%><br>
<hr>
use getProperty:<br>
userName:<jsp:getProperty name="user" property="userName"/><br>
passWord:<jsp:getProperty name="user" property="password"/><br>
age:     <jsp:getProperty name="user" property="age"/><br>
</body>
</html>
----------------------------------------------------------------------------
package
--------------------------------------------------------------------------
package userInfo;public class TestBean{
public String userName;
public String passWord;
public int age;

public void setUserName(String name){
this.userName=name;
}
public void setPassword(String password)
{
this.passWord=password;
}
public String getUserName()
{
return this.userName;
//return "yuan";
}
public String getPassword()
{
return this.passWord;
}
public void setAge(int age)
{
this.age=age;
}
public int getAge()
{
return this.age;
}}在register.jsp中如果我一旦用上了我标记为<1>的那个语句,就始终不能从register.html提交表单转到register.jsp页面。但是如果我一旦把那句话去掉的话,就可以转到register.jsp页面了,但是那却不是我想要的结果。请大家帮我解决一下,谢谢!

解决方案 »

  1.   

    property这个是哪个属性...怎么会是用*呢?
      

  2.   

    <jsp:setProperty name="user" property="*"/>
    是设置所有属性(即JavaBean的那个类)
    检查下JavaBean中属性和register.html中表单属性是否一致吧
    useBean都忘光了 去做个实验
      

  3.   

    哦 你的类中 age类型为int
    而表单提交后类型默认String
    又设置所有字段封装在JavaBean 所以报错 把age的set方法改为
    public void setAge(String age){
      this.age=Integer.parseInt(age);
    }
    试试吧
      

  4.   

    以前真没试过 在另一页面setProperty直接用*呢 谢谢啦
      

  5.   

    谢谢tdgwj大哥的热心帮助,用你说的方法确实能实现成功跳转,但是跳转后只有userName显示正确,passWord和age显示的都和我表单提交的内容不一样呀。password始终显示NULL,age始终显示0。这是怎么回事呀?
      

  6.   

    property用*是设置Bean属性的一种快捷方式,它表示Bean中的属性名字、类型都和request当中的相匹配。
      

  7.   

    呵呵。第二个问题我解决了,原来是我的获取属性时的属性名和表单中的大小写没弄对,所以获取的时候就获取不到,因此就显示为NULL了。谢谢各位的帮助!
      

  8.   

    register.html  里面的<input name="passWord" type="password">
    因为你的bean里面并没有 setPassWord() (你的setPassword()是方法)   bean里面的passWord 得不到值
    最好 passWord 用setPassword方法名,要是getXxx(),Xxx是属性的名字(好象是规范)
        
      

  9.   

    (你的setPassword()是方法)   哈哈写错了  (你的方法是setPassword())