好的我正在运行JSf应用程序,我在第220行遇到NullPointerException错误
response.setContentType("text/html");
不确定为什么会出现这个问题。该行存在的完整方法如下:
public void reserveDates(String eventTitle, Date startDate,
Date endDate, String requestType, int terminals,
String lastName, String firstName, String middleInitials,
int badgeNo, String networkID, String telephoneNo,
String orgCode, String justification)
throws ServletException, IOException{
MapCreation mapCreate = new MapCreation(startDate, endDate);
newMap = mapCreate.getDatesTreeMap();
MapStorage mapStore = new MapStorage();
mapStore.storeMap(newMap);
//create instance of reservation class
rsvObj = new Reservation(eventTitle, startDate,
endDate, requestType, terminals, lastName, firstName,
middleInitials, badgeNo, networkID, telephoneNo,
orgCode, justification);
boolean possible = rsvObj.checkRange();
if(possible == true)
{
try{
HttpServletResponse response = null;
response.setContentType("text/html");
response.sendRedirect("main");
CreateTempStorage();
}catch(IOException ioe){
System.err.print(ioe);
}
}else if(possible == false){
try{
HttpServletResponse response = null;
response.setContentType("text/html");
response.sendRedirect("error");
}catch(IOException ioe){
System.err.print(ioe);
}
}
}
P.s。:给出错误的响应是在第一个条件,我检查是否(可能==真)
我只是想使用响应重定向到提到的“主要”或“错误”的页面 我很感谢这种支持。 谢谢!
答案 0 :(得分:3)
在抛出异常之前的行上初始化对null的响应
答案 1 :(得分:3)
response
为空。你将它设置在之前的那一行。
您需要一个实现抽象HttpServletResponse
的具体类。如果您有一个名为MyHttpServletResponse
的类来实现HttpServletResponse
,那么您的代码可能如下所示:
MyHttpServletResponse response = new MyHttpServletResponse();
(也许你的意思是使用HttpServletResponseWrapper
或类似的东西?)
答案 2 :(得分:1)
response
在哪里分配值?
此外,您的代码具有“差”风格。考虑更换此
if (possible == true) {
...
else if (possible == false) { // there is no other possibility
...
}
与
if (possible) {
...
else {
...
}
答案 3 :(得分:1)
HttpServletResponse response = null;
response.setContentType("text/html");
response.sendRedirect("main");
将对象设置为null后,无法调用对象上的方法。您不应将响应设置为null。某处应该有一个响应对象。将它传递给您的方法。
答案 4 :(得分:0)
问题是,如果您在servlet
内编写此代码,那么您将拥有response
对象,否则如果您在任何method
中编写此代码,则传递{{1}调用方法时来自response
的对象。实际上我们不需要创建servlet
的对象。
HttpServletResponse
答案 5 :(得分:0)
嗯,我相信的最佳选择是在FacesContext中找到的。在这种情况下替换重定向的代码是:
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext ec = facesContext.getExternalContext();
ec.redirect("progress.xhtml");
希望这有助于他人。的问候,