2016-01-15 1 views
-1

Это первый раз для меня в JSP и веб-приложениях в целом. У меня есть проблема с этим кодом, который я пишу:Как инициализировать и взаимодействовать с переменной с помощью JSP

<% 
      List<Location> result = new ArrayList<>(); 
      if (basicSearchBean.validate()) { 
       result = basicSearchBean.getResult(); 
      } 
      pageContext.setAttribute("result", result); 
     %> 
    <div style="width: 800px; margin-left: 50px; margin-top: 30px;"> 
     <% 
      if (result.size() > 0) { 
     %> 
       //VISUALIZATION PART 
     <% 
      } 
     %> 
    </div> 

Этот код является частью страницы JPS, где пользователь заполнить форму, а затем нажмите кнопку типа, которая перенаправляет на самой странице представить. После validate() (метод javabean basicSearchBean) задается личная переменная «result» для базовогоSearchBean. Код всегда выходит из строя в if (result.size() > 0) с ошибкой NullPointerException. Я инициализирую переменную не так, как внутри страницы jsp?

Вот код боба

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; 
    } 
} 

Я нашел руководство в Интернете, где метод как getListOfStructures() возвращать переменную инициализируется как final.

Большое спасибо за ваше время!

ответ

0

Я не вижу проблем с кодом, который вы здесь указали. Ваша переменная правильно инициализирована, нулевое значение исходит от компонента. Предположительно, это потому, что FilteredSearch.getListOfStructures() возвращает null, но это то, что вам нужно было бы отлаживать самостоятельно.

Однако ... запись кусков Java внутри вашей страницы JSP - это очень плохая практика, и вы должны избегать этого настолько, насколько сможете. См. this page для некоторых рекомендаций по эффективной практике.

Думаю, вы найдете эту задачу намного проще, используя JSTL и EL. Они в основном предоставляют библиотеки тегов для общих функций и механизмов для доступа к данным из ваших компонентов, итерации по данным и т. Д. Это экономит написание большого количества шаблонов кода и означает, что в большинстве случаев вы можете избежать использования Java на самой странице.

Кроме того, вы также можете создавать свои собственные теги (tutorial), что позволяет сохранить логику Java отдельно от макета вашей страницы.

Если вы используете эти технологии хорошо, вы должны получить страницу JSP, содержащую только теги JSP/HTML, и вся логика будет отделена от вашего компонента и любых классов тегов, которые намного проще писать, понимать и поддерживать, чем с логикой в ​​вашем слое презентации.