这是我第一次使用JSP和Web应用程序。我写的这段代码有问题:
validate()
此代码是jps页面的一部分,用户填写表单,然后按下在页面本身重定向的类型提交按钮。在if ( result.size() > 0 )
(javabean basicSearchBean的方法)之后,设置了basicSearchBean的私有变量“result”。代码总是在public class SearchBean {
//other attributes...
private List<Location> result;
public List<Location> getResult() {
return result;
}
public void setResult(List<Location> result) {
this.result = result;
}
public SearchBean() {
}
//Getters and setters....
public boolean validate() {
if(this.nation.equals("") || this.city.equals("") || this.checkin == null|| this.checkout == null) {
return false;
}
try {
this.result = FilteredSearch.getListOfStructures(this);
} catch (Exception e) {
return false;
}
return true;
}
}
中失败,错误为NullPointerException。我是否在jsp页面内以错误的方式初始化变量?
这是bean的代码
getListOfStructures()
我在网上找到了一个指南,其中像final
这样的方法返回一个初始化为http.ClientRequest
的变量。
非常感谢你的时间!
答案 0 :(得分:0)
我在这里显示的代码中看不到任何问题。您的变量已正确初始化,null值来自bean。大概这是因为FilteredSearch.getListOfStructures()返回null,但这是你必须自己调试的。
但是......在JSP页面中编写Java块是非常糟糕的做法,你应该尽可能地避免这种情况。有关一些良好做法指南,请参阅this page。
我认为使用JSTL和EL可以更轻松地完成此任务。它们基本上提供了用于从bean访问数据,迭代数据等的常用函数和机制的标记库。它可以节省您编写大量样板代码,并且意味着您在大多数情况下可以避免在页面本身中使用Java。
此外,您还可以创建自己的标记(tutorial),以便将Java逻辑与页面布局分开。
如果你很好地使用这些技术,你应该最终得到一个只包含JSP / HTML标签的JSP页面,所有的逻辑将分离到你的bean和任何标记类中,这比编写,理解和维护要容易得多。表达层中的逻辑。