0
Im試圖使用MVC編寫Web應用程序。我有bean,jsp和servlets。 我想完成的事:用戶將能夠在表中創建(購物)列表。桌子上會有一個顯示它創建的日子。然後它將創建3列的行(1-id,2個產品名稱,3個'買入'鏈接)。當用戶點擊「已購買」鏈接時,它將從3列中移除鏈接,並將產品的名稱變爲綠色。 表格外部會有另外一個鏈接,讓用戶創建一個新列表。如果有現有的清單,那麼尚未「購買」的產品會自動進入新清單。一旦用戶點擊「創建新列表」鏈接,它將只顯示新列表(如果有的話還有未購買的產品)。使用jsps更改視圖(來自MVC)
我目前遇到問題:日期不會顯示,直到點擊了購買的鏈接,但點擊它時不會將文本變爲綠色或刪除「已購買」鏈接。
這裏是我的代碼,任何幫助將不勝感激。謝謝。
Item.java
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Item {
//property names
String name;
Integer id;
boolean available = true;
Format formatter = new SimpleDateFormat("MM/dd/yyyy");
String today = formatter.format(new Date());
public Item(Integer id, String name, boolean available){
this.id = id;
this.name = name;
this.available = available;
}
public String getToday() {
return today;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isAvailable() {
return available;
}
public void setAvailable(boolean available) {
this.available = available;
}
}
DisplayList.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Grocery List</title>
</head>
<body>
<h1>Grocery List</h1>
<table border='1'>
<tr><th colspan='3'>${entry.today}</th></tr>
<c:forEach items="${entries}" var="entry">
<tr>
<td>${entry.id}</td>
<c:choose>
<c:when test="${entry.available != false }">
<td>${entry.name}</td>
<td><a href="Bought?id=${entry.id}">Bought</a></td>
</c:when>
<c:when test="${entry.available != true }">
<td style="color:green;" >${entry.name}</td>
<td></td>
</c:when>
</c:choose>
</tr>
</c:forEach>
<tr>
<form action="Groceries" method="post">
<td colspan='2'><input type="text" name="product" /></td>
<td><input type="submit" name="add" value="Add" /></td>
<p><input type="button" name="new" value="New List" /></p>
</form>
</tr>
</table>
</body>
</html>
Groceries.java
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/Groceries")
public class Groceries extends HttpServlet {
private static final long serialVersionUID = 1L;
int y = 3;
public Groceries() {
super();
}
public void init(ServletConfig config) throws ServletException {
super.init(config);
List<Item> entries = new ArrayList<Item>();
entries.add(new Item(1, "Milk", true));
entries.add(new Item(2, "Soda", true));
getServletContext().setAttribute("entries", entries);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("/WEB-INF/DisplayList.jsp").forward(request, response);
}
@SuppressWarnings("unchecked")
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("product");
Item entry = new Item(y, name, true);
y++;
List<Item> entries = (List<Item>) getServletContext().getAttribute("entries");
entries.add(entry);
response.sendRedirect("Groceries");
}
}
Bought.java
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/Bought")
public class Bought extends HttpServlet {
private static final long serialVersionUID = 1L;
public Bought() {
super();
}
/**
* Given an id, retrieve the List entry.
*/
@SuppressWarnings("unchecked")
private Item getEntry(Integer id)
{
List<Item> entries = (List<Item>) getServletContext().getAttribute("entries");
for(Item entry : entries)
if(entry.getId().equals(id))
return entry;
return null;
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// get the entry to be edited
Integer id = Integer.valueOf(request.getParameter("id"));
Item entry = getEntry(id);
// pass the entry to jsp using request scope
request.setAttribute("entry", entry);
request.getRequestDispatcher("/WEB-INF/DisplayList.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// get the entry to be edited
Integer id = Integer.valueOf(request.getParameter("id"));
Item entry = getEntry(id);
// change the entry based on user input
entry.setAvailable(true);
// send the user back to the guest book page
request.getRequestDispatcher("/WEB-INF/DisplayList.jsp").forward(request, response);
}
}
您需要剝離下來你的代碼,以顯示您認爲錯誤是來自一個更具體的區域。這樣,你會得到更快的答覆。 – 2014-11-05 20:06:51