出於某種原因,我在doGet方法中追加到StringBuffer(sb)的代碼HTML沒有在另一個Servlet中被拾取。追加到StringBuffer(Java Servlets)不拾取作爲Servlet中的屬性
這是HTML代碼,我追加到的StringBuffer某人:
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext context = request.getSession().getServletContext();
List<Course> courses = (List<Course>) context.getAttribute("COURSES");
StringBuffer sb = new StringBuffer();
sb.append(getHeader());
sb.append("<form action=\"/Assignment_2/addCourse\">");
sb.append("<table border=\"2\">");
//sb.append("<tr><td>");
//sb.append("</tr></td>");
sb.append("<select>"
+ "<option value = book>Book</option>"
+ "<option value=tablet>Tablet</option>"
/*+ "<option value=xxxxxx>XXXXXXX</option>"
+ "<option value=yyyyy>YYYYY</option>"*/
+ "/select>");
sb.append("<tr><td>Type</td><td><input type=\"text\" name=\"type\" value=\"\" /></td></tr>");
sb.append("<tr><td>Name</td><td><input type=\"text\" name=\"name\" value=\"\" /></td></tr>");
sb.append("<tr><td>Additional Info</td><td><input type=\"text\" info=\"Additional Info\" value=\"\" /></td></tr>");
sb.append("<tr><td># of Copies</td><td><input type=\"text\" name=\"# of Copies\" value=\"\" /></td></tr>");
/*for (Course course : courses) {
sb.append("<input type=\"checkbox\" name=\"prerequisite\" value=\"" + course.getCode() + "\">" + course.getCode() + "</input> <br />");
}*/
sb.append("</td></tr><tr><td><input type=\"submit\" value=\"Add\" /></td></tr></table></form>");
sb.append("</body></html>");
PrintWriter out = response.getWriter();
out.println(sb.toString());
}
public String getHeader() {
StringBuffer sb = new StringBuffer();
sb.append("<html>");
sb.append("<head><title>Department Library</title></head><body>");
return sb.toString();
}
所以後用戶點擊提交後,該代碼放在這裏:
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext context = request.getSession().getServletContext();
List<Course> courses = (List<Course>) context.getAttribute("COURSES");
for (Course course : courses) {
System.out.println(course);
}
StringBuffer sb = new StringBuffer();
sb.append(getHeader());
sb.append("<table border=\"2\"><tr>"
+ "<td>ID</td>"
+ "<td>Type</td>"
+ "<td>Name</td>"
+ "<td>Additional Info</td>"
+ "<td>Available</td>"
+ "<td>Operation</td></tr>");
for (Course course : courses) {
sb.append("<tr><td>");
sb.append(course.getMyId() + "</td><td>" + course.getType() + "</td>");
/*sb.append("<td>");
for (String str : course.getPrerequisites()) {
sb.append(str + " ");
}*/
sb.append("</td><td>"
+ course.getName());
sb.append("</td><td>"
+ course.getAdditionalInfo());
sb.append("</td><td>"
+ course.getAvailable());
sb.append("</td><td><a href=\"edit?code="+course.getCode() +"\">Edit</a></td>");//</tr>");
}
sb.append("</table><a href=\"add\">Add Items</a></body></html>");
PrintWriter out = response.getWriter();
out.println(sb.toString());
}
public String getHeader() {
StringBuffer sb = new StringBuffer();
sb.append("<html>");
sb.append("<head><title>Department Library</title></head><body>");
return sb.toString();
}
這條線:
for (Course course : courses) {
System.out.println(course);
}
告訴我,我的數據沒問題... Servlets發生了什麼?
************* EDIT ****************
當添加下面(我的原稿的第一方法中):
sb.append("<tr><td>Available</td><td><input type=\"text\" name=\"available\" value=\"\" /> </td></tr>");
doGet我收到我的表中的數據!但由於某種原因(在同一個文件中):
sb.append("<tr><td>Additional Info</td><td><input type=\"text\" name=\"info\" value=\"\" /> </td></tr>");
沒有被讀取,例如,它在我的表中讀取爲'null'。我沒有爲輸入輸入'null'(只是爲了澄清)。
此外..我點擊下一個/提交/添加任何提交表單操作輸入後,我的數據/輸入在URL中可見。
提交空表後,你會得到什麼? – 2014-10-04 08:46:44
null被放入附加信息(info)和可用(可用)HTML thingy's ... – cryptomath 2014-10-04 09:21:39
當你點擊提交按鈕時,你能夠調用你的第二個servlet嗎? – 2014-10-04 09:22:09