Java主要代码:
   HttpServletRequest request = ServletActionContext.getRequest();
    int ID=Integer.parseInt(request.getParameter("ID"));
    
    String SQL = "SELECT name,author,price from note where ID= ?";
   
try{   
      Class.forName(driverName).newInstance();   
      con=DriverManager.getConnection(url , userName,    
          password);   
      pstmt=con.prepareStatement(SQL);
   pstmt.setInt(1,ID);
   pstmt.executeQuery() ;
   rs = pstmt.executeQuery();
   System.out.println("rs:"+rs);
    while(rs.next()){
       Book book = new Book();
       book.setName(rs.getString(1));
       book.setAuthor(rs.getString(2));
       book.setPrice(rs.getString(3));
    
      }
jsp代码:
<s:form action="update" method="post">
        <jsp:useBean id="book" class="Demo.Book" scope= "page"/> 
            <s:hidden name="ID" value="%{book.ID}"></s:hidden>
   <s:textfield name="name" label="书名"  value="%{book.name}"></s:textfield>
   <s:textfield name="author" label="作者" value="%{book.author}"></s:textfield>
   <s:textfield name="price" label="价格"  value="%{book.price}"></s:textfield>
   <s:submit value="更新" ></s:submit>     
     </s:form>
我已经判断rs有值,为什么jsp里面输不出来呢?我jsp写错了吗?

解决方案 »

  1.   

    你没有把book的对象放到request 的attribute中
    在java代码中再加上request.setAttribute("book",book);
      

  2.   

    楼上误人子弟!
    action中先从jsp1中getParameter,经过查询语句后,通过set方法得到book,在跳转到另外的jsp2中,在jsp2中取值。
    怎么看上去你想用一个jsp就完成操作?
      

  3.   

    哥们,JSP是先编译后执行的,你在同一个jsp里面又取又显示。是不行的。把你取数据的方法放到Servlet里面,然后塞到request里面,再跳转到这个jsp(这个jsp里面只管显示就好了)。
      

  4.   

    LZ,你没有把取出来的那个Book对象存到request里面呀,而且<jsp:useBean id="book" class="Demo.Book" scope= "page"/> 的scope= "page"是将作用域设置为当前页啦。
      

  5.   

    "%{book.name}"貌似是这样写吧:"${book.name}"
      

  6.   


    你没有把取出来的那个Book对象存到request里面呀,而且<jsp:useBean id="book" class="Demo.Book" scope= "page"/> 的scope= "page"是将作用域设置为当前页啦。
    "%{book.name}"不对,应该是"${book.name}"
      

  7.   

    book都还是一个局部变量,JSP无法访问到,自然是读不出来了
      

  8.   

    既然已经使用了Struts2的标签,那就用s:iterator标签啊,只要把book放在setAttribute中,也就是在
    java代码中加上 request.setAttribute("book",book);
    然后在JSP页面中把<jsp:useBean >给去掉,使用
    <s:iterator name="book"> 就应该没问题了,还很方便啊
      

  9.   

     
    我再Java中加入request.setAttribute("book",book);倒是没错可是在jsp中加入<s:iterator name="book">报Undefined attribute name "name"我就把name改成id了可是还不行,能贴出你的代码吗?谢谢!
      

  10.   

    我把page改成session或application试了试都还是不行啊至于${book.name}我该完直接就报错:Invalid attribute (value)
      

  11.   

    JavaBean还分局部变量和全局变量吗?我是个新人,麻烦说清楚点好吗?我该怎么写?在这先谢各位了!
      

  12.   

    明显用到action了,看你action的代码吧!
      

  13.   

    我现在把jsp代码改为:
    <s:form name="prepareupdate" method="post">
      <jsp:useBean id="book" class="Demo.Book" scope="request"></jsp:useBean>
      <jsp:setProperty property="ID" name="book"/>
      <s:hidden name="ID" value="%{ID}"><jsp:getProperty property="ID" name="book"/></s:hidden>
      <jsp:setProperty property="name" name="book"/>
      <s:textfield name="name" label="书名"  value="%{name}"><jsp:getProperty property="name" name="book"/></s:textfield>
      <jsp:setProperty property="author" name="book"/>
      <s:textfield name="author" label="作者" value="%{author}"><jsp:getProperty property="author" name="book"/></s:textfield>
      <jsp:setProperty property="price" name="book"/>
      <s:textfield name="price" label="价格" value="%{price}"><jsp:getProperty property="price" name="book"/></s:textfield>
      <s:submit value="修改"></s:submit>
    </s:form>
    它现在是只能得id别的获取不了,我后台别的有值我判断了!
      

  14.   

    <jsp:useBean id="book" class="Demo.Book" scope= "page"/>  
    相当于新实例化一个Book对象。
    你应该把从数据库查出来的Book对象放到request中,在页面上从request中拿值
      

  15.   

    "%{book.name}"不对,应该是"${book.name}"
      

  16.   

    你那个book是在while循环内部。而且你要把book对象存入request中。request.setAttribut("book",book);
    <jsp:useBean id="book" class="Demo.Book" scope="requestScope.book " />EL表达式语法错误。应该是${book.name}