如何使用JSP初始化和交互变量

时间:2016-01-15 10:22:55

标签: java jsp jstl javabeans

这是我第一次使用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的变量。

非常感谢你的时间!

1 个答案:

答案 0 :(得分:0)

我在这里显示的代码中看不到任何问题。您的变量已正确初始化,null值来自bean。大概这是因为FilteredSearch.getListOfStructures()返回null,但这是你必须自己调试的。

但是......在JSP页面中编写Java块是非常糟糕的做法,你应该尽可能地避免这种情况。有关一些良好做法指南,请参阅this page

我认为使用JSTLEL可以更轻松地完成此任务。它们基本上提供了用于从bean访问数据,迭代数据等的常用函数和机制的标记库。它可以节省您编写大量样板代码,并且意味着您在大多数情况下可以避免在页面本身中使用Java。

此外,您还可以创建自己的标记(tutorial),以便将Java逻辑与页面布局分开。

如果你很好地使用这些技术,你应该最终得到一个只包含JSP / HTML标签的JSP页面,所有的逻辑将分离到你的bean和任何标记类中,这比编写,理解和维护要容易得多。表达层中的逻辑。