Liferay : Исключение Java NullPointer

#java #nullpointerexception #liferay

#java #исключение nullpointerexception #liferay

Вопрос:

Я только что развернул свой первый портлет liferay, но портлет, похоже, не работает. это ошибка, которую я получаю на своей консоли (я новичок в разработке Java и в Liferay тоже!) :

 23:22:03,954 ERROR [http-bio-8080-exec-10][render_portlet_jsp:132] null
java.lang.NullPointerException
at me.hicham.portlet_view.Films.doEdit(Films.java:102)
 

В строке 102 у меня есть :

         if(mode.equalsIgnoreCase("edit")) {...}
 

вот мой Films.java :

 package me.hicham.portlet_view;
import me.hicham.portlet_controller.Film;
import me.hicham.portlet_model.*;

import javax.portlet.ActionRequest;
import javax.portlet.PortletMode;
import javax.portlet.PortletURL;
import javax.portlet.RenderRequest;
import javax.portlet.ActionResponse;
import javax.portlet.RenderResponse;
import javax.portlet.PortletException;
import javax.portlet.WindowState;

import com.liferay.util.bridges.mvc.MVCPortlet;
import java.io.IOException;
import javax.portlet.PortletRequestDispatcher;


public class Films extends MVCPortlet {

public void doView(RenderRequest request, RenderResponse response)
        throws PortletException, IOException {

    String nomFilm = request.getParameter("nom");
    if (nomFilm == null ) {
        nomFilm="";
        }

    String listeFilm="";

    PortletURL renderURL = response.createRenderURL(); 
      renderURL.setPortletMode(PortletMode.VIEW);
      renderURL.setWindowState(WindowState.MAXIMIZED);
      renderURL.setWindowState(WindowState.NORMAL);

      listeFilm=listeFilm "<div id="container">";

      listeFilm=listeFilm "<form name="input" action="" renderURL "" method="POST" class="zebra">";
      listeFilm=listeFilm "<table>";
      listeFilm=listeFilm "<tr><td>Nom:</td><td><input type="text" name="nom" value="" nomFilm ""></td></tr>";
      listeFilm=listeFilm "<tr><td></td><td><input type="submit" value="Rechercher"></td></tr>";
      listeFilm=listeFilm "<table>";
      listeFilm=listeFilm "</form> ";



    try {
        listeFilm=listeFilm "n<table  class="zebra">";
        listeFilm=listeFilm "n<tr>";
        listeFilm=listeFilm "n<td></td><td>  Nom  </td><td>  Genre  </td><td>  Synopsis  </td><td>  Date Sortie  </td>";
        listeFilm=listeFilm "n</tr>";
        String ID="";
        for (Film film : MediaDAO.ListerTousLesFilms(nomFilm))
        {
            ID=String.valueOf(film.getId_film());
            PortletURL renderURL2 = response.createRenderURL(); 
              renderURL2.setPortletMode(PortletMode.EDIT);
              renderURL2.setWindowState(WindowState.MAXIMIZED);
              renderURL2.setWindowState(WindowState.NORMAL);   
              renderURL2.setParameter("mode","edit");
              renderURL2.setParameter("ID",ID);

            listeFilm=listeFilm "n<tr>";
            listeFilm=listeFilm "n<td><a href="" renderURL2 ""><img src="http://localhost:8080/html/themes/classic/images/common/edit.jpg" alt="Modifier"/></a></td><td>" film.getNom() "</td><td>"  MediaDAO.getGenre(film.getId_genre()).getLibelle() "</td><td>" film.getSynopsis() "</td><td>" film.getDateSortie() "</td>";
            listeFilm=listeFilm "n</tr>";
        }
        listeFilm=listeFilm "n</table>";

        PortletURL renderURL2 = response.createRenderURL(); 
          renderURL2.setPortletMode(PortletMode.EDIT);
          renderURL2.setWindowState(WindowState.MAXIMIZED);
          renderURL2.setWindowState(WindowState.NORMAL);   
          renderURL2.setParameter("mode","add");
        listeFilm=listeFilm "n<a href="" renderURL2 ""><img src="http://localhost:8080/html/themes/classic/images/common/ajout.jpg" alt="Ajouter"/></a>";
        listeFilm=listeFilm "</div>";

    } catch (Exception e) {
        // TODO Auto-generated catch block
        listeFilm=listeFilm e.getMessage();
    }
     request.setAttribute("att",listeFilm);
    response.setContentType("text/html");

    PortletRequestDispatcher dispatcher =
        getPortletContext().getRequestDispatcher("/WEB-INF/jsp/Films_view.jsp");
    dispatcher.include(request, response);

}


public void doEdit(RenderRequest request, RenderResponse response)
        throws PortletException, IOException {

    response.setContentType("text/html");
    String mode=request.getParameter("mode");
    request.setAttribute("att1", mode);

    if(mode.equalsIgnoreCase("edit"))
    {
        String chaineHTML=" ";
        try {

            String id_film="0";
            id_film =  request.getParameter("ID");
            Film film = MediaDAO.getFilm(id_film);
            chaineHTML=chaineHTML "n<table class="zebra">";
            chaineHTML=chaineHTML "n<tr>";
            chaineHTML=chaineHTML "n<td colspan="2">Modification</td>";
            chaineHTML=chaineHTML "n</tr>";


            chaineHTML=chaineHTML "n<tr><td><input type="hidden" name="Mode" value="edit"><input type="hidden" name="ID" value="" film.getId_film() "">Nom :</td><td><input type="text" name="Nom" value="" film.getNom() ""></td></tr>";
            chaineHTML=chaineHTML "n<tr><td>Genre :</td><td><input type="text" name="Genre" value=""  MediaDAO.getGenre(film.getId_genre()).getLibelle() ""></td></tr>";
            chaineHTML=chaineHTML "n<tr><td>Synopsis :</td><td><input type="text" name="Synopsis" value="" film.getSynopsis() ""></td></tr>";
            //chaineHTML=chaineHTML "n<tr><td>Image :</td><td><input type="text" name="Image" value="" film.getImage() ""></td></tr>";
            chaineHTML=chaineHTML "n<tr><td>Date Sortie :</td><td><input type="text" name="DateSortie" value="" film.getDateSortie() ""></td></tr>";
            chaineHTML=chaineHTML "n<tr><td></td><td><input type="submit" value="Valider"></td></tr>";



            chaineHTML=chaineHTML "n</table>";
            chaineHTML=chaineHTML "n";

        } catch (Exception e) {
            // TODO Auto-generated catch block
            chaineHTML=chaineHTML e.getMessage();
        }
         request.setAttribute("att",chaineHTML);

    }
    else
    {
        String chaineHTML="";
        try {
            chaineHTML=chaineHTML "n<table class="zebra">";
            chaineHTML=chaineHTML "n<tr>";
            chaineHTML=chaineHTML "n<td colspan="2">Insertion</td>";
            chaineHTML=chaineHTML "n</tr>";

            chaineHTML=chaineHTML "n<tr><td><input type="hidden" name="Mode" value="add"><input type="hidden" name="ID" >Nom :</td><td><input type="text" name="Nom" ></td></tr>";
            chaineHTML=chaineHTML "n<tr><td>Genre :</td><td><input type="text" name="Genre" ></td></tr>";
            chaineHTML=chaineHTML "n<tr><td>Synopsis :</td><td><input type="text" name="Synopsis" ></td></tr>";
            //chaineHTML=chaineHTML "n<tr><td>Image :</td><td><input type="text" name="Image" ></td></tr>";
            chaineHTML=chaineHTML "n<tr><td>Date Sortie :</td><td><input type="text" name="DateSortie" ></td></tr>";
            chaineHTML=chaineHTML "n<tr><td></td><td><input type="submit" value="Valider"></td></tr>";



            chaineHTML=chaineHTML "n</table>";
            chaineHTML=chaineHTML "n";

        } catch (Exception e) {
            // TODO Auto-generated catch block
            chaineHTML=chaineHTML e.getMessage();
        }
         request.setAttribute("att",chaineHTML);

    }
    PortletRequestDispatcher dispatcher =
        getPortletContext().getRequestDispatcher("/WEB-INF/jsp/Films_edit.jsp");
    dispatcher.include(request, response);

}

public void doHelp(RenderRequest request, RenderResponse response)
        throws PortletException, IOException {

    response.setContentType("text/html");

    PortletRequestDispatcher dispatcher =
        getPortletContext().getRequestDispatcher("/WEB-INF/jsp/Films_help.jsp");
    dispatcher.include(request, response);

}

public void processAction(ActionRequest request, ActionResponse response)
        throws PortletException, IOException {

    try
    {
        System.out.println("ProcessAction");
        String Mode = request.getParameter("Mode");
        if(Mode.equalsIgnoreCase("edit"))
        {
            String id_film = request.getParameter("ID");
            String Nom = request.getParameter("Nom");
            String Genre = request.getParameter("Genre");
            String Synopsis = request.getParameter("Synopsis");
            //String Image = request.getParameter("Image");
            String DateSortie = request.getParameter("DateSortie");
            System.out.println("begin....................");
            MediaDAO._Edit(id_film, Nom, Genre, Synopsis, DateSortie);
            System.out.println("end..................");
        }
        else
        {
            String Nom = request.getParameter("Nom");
            String Genre = request.getParameter("Genre");
            String Synopsis = request.getParameter("Synopsis");
            //String Image = request.getParameter("Image");
            String DateSortie = request.getParameter("DateSortie");
            System.out.println("begin....................");
            MediaDAO._Add( Nom, Genre, Synopsis, DateSortie);
            System.out.println("end..................");
        }
        response.setPortletMode(PortletMode.EDIT);
     }catch (Exception e) {

         e.printStackTrace();
         System.err.println("Process Action err " e.getMessage());
}
        }

}
 

Спасибо вам, ребята, за вашу помощь.

Ответ №1:

Похоже, что это вызовет NPE, если вы не включите параметр mode.

 String mode=request.getParameter("mode"); // This returns null if mode isn't set.
request.setAttribute("att1", mode);

if(mode.equalsIgnoreCase("edit")) // You can't call methods on a null object.
 

Вы можете проверить, имеет ли mode значение null, прежде чем сравнивать его с «редактировать» или просто поменять режим / «редактировать», поскольку «редактировать» никогда не будет нулевым

 if("edit".equalsIgnoreCase(mode))