得到一個家庭作業,給我的問題....它修改一個JSF項目與兩個頁面和一個bean,以適應MVC2通過添加兩個頁面和一個控制器servlet和另一個bean另外兩頁。新的主頁面轉發到第二個新頁面或舊的第一個頁面。我的問題是response.getParameter()總是導致null。request.getParameter()返回null
<%@page session="false" import="java.util.Iterator"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<jsp:useBean id="status" scope="request" class="JSFRegistration.Status" />
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>JSP Page</title>
</head>
<body>
<% if (status!=null && !status.isSuccessful()){%>
<font color="red">Processing errors:
<ul><%Iterator errors=status.getExceptions();
while (errors.hasNext()){
Exception e = (Exception) errors.next();%>
<li><%= e.getMessage()%><%}%></ul></font><%}%>
<form action="LoginServlet" method="POST">
<% String username = request.getParameter("username");
if (username==null) username="";%>
<input type="text" name="usernameTF" value="<%=username%>" />
<% String password = request.getParameter("password");
if (password==null) password="";%>
<input type="password" name="passwordTF" value="<%=password%>" />
<input type="submit" value="Login" />
</form>
</body>
</html>
這基本上是從我們的書直接複製,但我需要新的主頁的字段。控制器servlet也是一樣的,除了只包含我需要的字段之外的直接副本。
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
RequestDispatcher view = null;
Status status = new Status();
request.setAttribute("status", status);
String username = request.getParameter("username");
String password = request.getParameter("password");
if (username==null || username.length()==0)
status.addException(new Exception("Please enter username"));
if (password==null)
status.addException(new Exception("Please enter password"));
if (!status.isSuccessful()){
view = request.getRequestDispatcher("Login.jsp");
//view.forward(request, response);
}
else
try{
request.setAttribute("username", username);
request.setAttribute("password", password);
view = request.getRequestDispatcher("Registration.jsp");
} catch (Exception e) {
status.addException(new Exception("Error"));
view = request.getRequestDispatcher("Login.jsp");
}
view.forward(request, response);
}
和Status類,再次從書中直接複製。
public class Status {
private ArrayList exceptions;
public Status(){
exceptions = new ArrayList();
}
public void addException(Exception exception) {
exceptions.add(exception);
}
public boolean isSuccessful(){
return (exceptions.isEmpty());
}
public Iterator getExceptions(){
return exceptions.iterator();
}
無論在兩個框中輸入什麼內容,逐步執行調試都會顯示未傳遞給參數的值。如果兩個都有文本,如果只有一個文本和兩個都是空的,我會在屏幕上方顯示創建的例外。
啊,完全忽略了。老實說,我已經落後了,這本書和額外的內容已經過時了。本書對JSF沒有任何幫助,因爲它顯示了在NetBeans中支持Visual JSF時的所有內容,並且它不在NetBeans 7中。它不提供任何代碼,我在此處發佈的內容是額外內容的副本因爲它是我們最接近的例子,而不需要額外的工作來自己學習。這個課程不是必需的,我只是把它作爲一個認證的一些選修課的更有趣的課程。 –
您可以在我們的JSF標籤wiki頁面找到JSF教程。 http://stackoverflow.com/tags/jsf/info我也會和你的導師討論課程材料的質量。如果這是任務所期望的,我會很驚訝。 – BalusC
而且它有一個很大的學習曲線,pre-req並沒有涵蓋這個班級期望我們已經知道的很多東西,都使用同一本書。 –