读书人

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

发布时间: 2012-09-17 12:06:51 作者: rapoo

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;    } 

读书人网 >Java Web开发

热点推荐