首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

struts2为何会在jsp页面中得不到list的数据呢

2012-09-17 
struts2为什么会在jsp页面中得不到list的数据呢我的代码如下:Book.javapackage com.sevnce.beanimport ja

struts2为什么会在jsp页面中得不到list的数据呢
我的代码如下:
Book.java

package com.sevnce.bean;

import java.sql.Date;

public class Book {
private String name;
private String author;
private Date publishedDate;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}

public Date getPublishedDate() {
return publishedDate;
}
public void setPublishedDate(Date publishedDate) {
this.publishedDate = publishedDate;
}
}

BookAction.java

package com.sevnce.action;

import java.util.ArrayList;
import java.util.List;

import com.sevnce.bean.Book;

public class BookAction {
public String title;
public Book book;
public static List<Book> bookList = new ArrayList<Book>();



public static void setBookList(List<Book> bookList) {
BookAction.bookList = bookList;
}

public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Book getBook() {
return book;
}

public void setBook(Book book) {
this.book = book;
}
public String initAdd(){
System.out.println("initAdd-----------");
return "initAdd";
}

public String add(){
bookList.add(book);
title = "添加书籍成功!";
System.out.println("add-----------");
return "success";
}
public String list(){
System.out.println("list----------- =" +bookList.size());
return "list";
}
public String clear(){
bookList.clear();
title = "清空书籍列表成功!";
System.out.println("clear-----------");
return "list";
}
public static List<Book> getBookList() {
return bookList;
}
}
listBook.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <base href="<%=basePath%>">  
  <title><s:property value="title"/></title> 
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">  
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<style type="text/css">
table {border-collapse: collapse; border: 1px solid #000000; margin-top: 20px; }
th, td {border: 1px solid #000000; font-size: 12px; }
body {font-size: 12px; }
</style>
  </head>
  
  <body>
  <table>
  <tr>
  <td>书名</td>
  <td>作者</td>
  <td>出版日期</td>
  </tr>
  <s:iterator id="book" value="bookList">


  <tr>
  <td> <s:property value="#book.name"/></td>
  <td>${book.author }</td>
  <td>${book.publishedDate }</td>
  </tr>  
  </s:iterator>
  </table>  
  hhhhhhhhhhhhhhh
  </body>
</html>

页面这些是肯定正常的跳转了的,struts.xml里面的配置也没有任何问题,但是就是没有取得到iterator里面的值,麻烦各位大侠帮忙看看啊。


[解决办法]
<s:iterator id="book" value="bookList"> 改成<s:iterator id="book" value=" #request.bookList"> 试试
[解决办法]
因为你的action里booklist是static的,不能返回到页面上,所以页面上取不到值,如果你想要页面显示list里的值,只能在action里重新定义一个newlist变量,然后在list方法里把你static的list值赋给变量newlist,然后页面上取newlist里的值,就能够显示了,代码如下

Java code
public static List<Book> bookList = new ArrayList<Book>();public List<Book> booklist = new ArrayList<Book>();public String list() {                title = "BookList";        for(int i=0;i<bookList.size();i++){            System.out.println(bookList.get(i));            booklist.add(bookList.get(i));        }        return "list";    }public List<Book> getBooklist() {        return booklist;    }    public void setBooklist(List<Book> booklist) {        this.booklist = booklist;    } 

热点排行