2013-06-17 1 views
0

Я разрабатываю приложение J2EE с appfuse, у меня есть веб-форму под названием easyVolAction, которая содержит метод search() Мне нужно сохранить результат поиска в базе данных, но при создании поиск действий: NullPointerException в объект Trajet .I создал TrajetDaoHibernate:Исключение при сохранении результата

public TrajetDaoHibernate() { 
     super(TrajetModel.class); 
    } 

    /** 
    * {@inheritDoc} 
    */ 
    @SuppressWarnings("unchecked") 
    public List<TrajetModel> getTrajet() { 
     Session session = getSessionFactory().getCurrentSession(); 
     Query qry = session.createQuery("from TrajetModel u order by upper(u.id)"); 
     return qry.list(); 
    } 

    /** 
    * {@inheritDoc} 
    */ 
    public TrajetModel saveTrajet(TrajetModel trajet) { 
     if (log.isDebugEnabled()) { 
      log.debug("user's id: " + trajet.getId()); 
     } 
     Session session = getSessionFactory().getCurrentSession(); 
     session.saveOrUpdate(trajet); 
     // necessary to throw a DataIntegrityViolation and catch it in UserManager 
     session.flush(); 
     return trajet; 
    } 

    @Override 
    public TrajetModel save(TrajetModel trajet) { 
     return this.saveTrajet(trajet); 
    } 

и TrajetDao:

общедоступный интерфейс TrajetDao расширяет GenericDao {

List<TrajetModel> getTrajet(); 

TrajetModel saveTrajet(TrajetModel trajet); 

}

и trajetManager:

@Service("trajetManager") 
public class TrajetModelImpl extends GenericManagerImpl<TrajetModel, Long> implements TrajetManager { 

    private TrajetDao trajetDao; 



    @Autowired 
    public void setTrajetModelDao(TrajetDao trajetDao) { 
     this.dao = trajetDao; 
     this.trajetDao = trajetDao; 
    } 

    /** 
    * {@inheritDoc} 
    */ 
    public TrajetModel getTrajet(String trajetId) { 
     return trajetDao.get(new Long(trajetId)); 
    } 

    /** 
    * {@inheritDoc} 
    */ 
    public List<TrajetModel> getTrajet() { 
     return trajetDao.getAllDistinct(); 
    } 

    /** 
    * {@inheritDoc} 
    */ 
    public TrajetModel saveTrajet(TrajetModel trajet) throws TrajetExistsException { 


     try { 
      return trajetDao.saveTrajet(trajet); 
     } catch (DataIntegrityViolationException e) { 
      //e.printStackTrace(); 
      log.warn(e.getMessage()); 
      throw new TrajetExistsException("Trajet '" + trajet.getNom() + "' already exists!"); 
     } catch (JpaSystemException e) { // needed for JPA 
      //e.printStackTrace(); 
      log.warn(e.getMessage()); 
      throw new TrajetExistsException("Trajet '" + trajet.getNom() + "' already exists!"); 
     } 
    } 


} 

finnaly действие, где я объявляю метод поиска:

общественности Строка Recherche() бросает IOException, TrajetExistsException {

HttpServletRequest request = (HttpServletRequest) FacesContext 
      .getCurrentInstance().getExternalContext().getRequest(); 
    // String url1 = 
    // FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("hidden"); 
    String departAller = request.getParameter("easyVolRobot:villeDepart"); 
    String arriveeAller = request.getParameter("easyVolRobot:villeArrivee"); 
    String jourAller = request.getParameter("easyVolRobot:jourDep"); 
    String moisAller = request.getParameter("easyVolRobot:dateDep"); 
    String jourRetour = request.getParameter("easyVolRobot:jourDep"); 
    String moisRetour = request.getParameter("easyVolRobot:dateArr"); 

    String jourAllerPlus1 = jourAller + 1; 

    parametre = "departAller=" + departAller + "&arriveeAller=" 
      + arriveeAller + "&jourAller=" + jourAller + "&moisAller=" 
      + moisAller + "&jourRetour=" + jourRetour + "&moisRetour=" 
      + moisRetour; 
    parametre1 = "departAller=" + departAller + "&arriveeAller=" 
      + arriveeAller + "&jourAller=" + jourAllerPlus1 + "&moisAller=" 
      + moisAller + "&jourRetour=" + jourRetour + "&moisRetour=" 
      + moisRetour; 

    String response = sendGetRequest(url, parametre); 

    // insert(); 

    PrintStream out = null; 
    try { 
     out = new PrintStream(new FileOutputStream(
       "/data/crawl/root/siteSNCF.html")); 
     out.print(response); 
    } finally { 
     if (out != null) 
      out.close(); 
    } 
    // tableau de resultats des trajets 
    List<TrajetModel> listTrajets = new ArrayList<TrajetModel>(); 
    // trajet 
    //TrajetModel trajet = new TrajetModel(); 

    File input = new File("/data/crawl/root/siteSNCF.html"); 
    Document doc = Jsoup.parse(input, "UTF-8", 
      "http://www.easyvols.org/france-voyage"); 
    for (Element vol : doc.select("div.vols")) { 

     //trajet = new TrajetModel(); 
     for (Element allerRetour : vol.select("div.aller-retour")) { 
      Elements aeroport = allerRetour.select("div.aeroport"); 
      System.out.println(aeroport.text()); 
      Elements depart = allerRetour.select("div.depart"); 
      Elements arrive = allerRetour.select("div.arrivee"); 
      Elements date = allerRetour.select("div.date"); 
      trajet.setNom(aeroport.text()); 
      trajet.setVilleDepart(depart.text()); 
      trajet.setVilleArrive(arrive.text()); 
      trajet.sethArrive(12); 
      trajet.sethDepart(11); 
      trajet.sethReqt(14); 



     } 

     Elements prix2 = vol.select("div.tarif"); 
     trajet.setPrice(prix2.text()); 


      trajet = trajetManager.saveTrajet(trajet); 


     System.out.println(trajet);} 
     return"mainMenu"; 
    } 
+0

, в котором выравнивает NPE брошена? –

ответ

0

почему ты прокомментировать эту строку?

//TrajetModel trajet = new TrajetModel(); 

Я не вижу другой линии, где вы создаете TrajetModel. Если объект не инициирован вы получите NPE здесь:

  trajet.setNom(aeroport.text()); 
+0

Я прокомментирую эту строку, потому что я уже инициализировал трайвер в другом классе – asma

+0

и линия NPE есть? –

+0

если я напишу system.out.println ("aeroport.text()"), я получаю результат, это не null – asma