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写错了吗?
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写错了吗?
在java代码中再加上request.setAttribute("book",book);
action中先从jsp1中getParameter,经过查询语句后,通过set方法得到book,在跳转到另外的jsp2中,在jsp2中取值。
怎么看上去你想用一个jsp就完成操作?
你没有把取出来的那个Book对象存到request里面呀,而且<jsp:useBean id="book" class="Demo.Book" scope= "page"/> 的scope= "page"是将作用域设置为当前页啦。
"%{book.name}"不对,应该是"${book.name}"
java代码中加上 request.setAttribute("book",book);
然后在JSP页面中把<jsp:useBean >给去掉,使用
<s:iterator name="book"> 就应该没问题了,还很方便啊
我再Java中加入request.setAttribute("book",book);倒是没错可是在jsp中加入<s:iterator name="book">报Undefined attribute name "name"我就把name改成id了可是还不行,能贴出你的代码吗?谢谢!
<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别的获取不了,我后台别的有值我判断了!
相当于新实例化一个Book对象。
你应该把从数据库查出来的Book对象放到request中,在页面上从request中拿值
<jsp:useBean id="book" class="Demo.Book" scope="requestScope.book " />EL表达式语法错误。应该是${book.name}