#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))