2016-04-28 71 views
0

作爲一項任務,我打算使用JSP頁面來完成一個WEB頁面。它應該有一個用戶登錄和一個產品列表被顯示在「index.jsp」上。在用戶登錄頁面後,他將被髮送到「index.jsp」與產品列表進行交互。一些互動包括改變他們的價格。如何驗證會話中的列表是否爲空? JSP

我遇到的問題是,我似乎無法正確驗證,如果我的產品列表中的會話是空的或不是。我的代碼將我的列表識別爲始終爲空,因此它會默認創建產品,這使得在用戶必須更改其價格時很困難。

這裏是我的 「的index.jsp」 代碼:

<% 

String valiLog = (String)session.getAttribute("logged"); 

if(valiLog == "false" || valiLog == null)  
{ 

    response.sendRedirect("error.jsp?cod= No se ha registrado."); 
} 


ArrayList<Productos> listaProductos = new ArrayList(); 


if(listaProductos.isEmpty()) 
{ 
listaProductos = new ArrayList();  
listaProductos.add(new Productos(1, "Beerus battle figure", 19900, "img/bee.jpg")); 
listaProductos.add(new Productos(2, "Goku battle figure", 11100, "img/gok.jpg")); 
listaProductos.add(new Productos(3, "Superman battle figure", 29900, "img/sup.jpg")); 
session.setAttribute("producto", listaProductos); 
out.println("se imprime"); 
} 


listaProductos = (ArrayList<Productos>)session.getAttribute("producto"); 

Usuario usuarioLogeado = (Usuario)session.getAttribute("usuarioActivo"); 




%> 

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>Ejercicio 26-04-2016</title> 
</head> 
<body> 


    <h1>Productos</h1> 
    <% 

     out.println("<h2>Usuario : " + usuarioLogeado.getNombre()+"</h2>"); 
     out.println("<table border='1'>"); 
     out.println("<tr>"); 
     out.println("<td><b>Producto</b></td>"); 
     out.println("<td><b>Precio</b></td>"); 
     out.println("</tr>"); 

     for(Productos p : listaProductos){  
     out.println("<tr>"); 
     out.println("<td><a href = 'mostrarImgBig.jsp?codImg=" + p.getCodigo() + "'><img src = '"+p.getRutaThumb() +"' width = '200' height = '200'/></a></td>"); 
     if(usuarioLogeado.getAdmin() == true) 
     { 
      out.println("<td><a href = 'modPrecio.jsp?codImg=" + p.getCodigo() + "'>"+p.getPrecio()+"</a></td>"); 
     }else{ 
     out.println("<td>"+p.getPrecio()+"</td>"); 
     } 

     } 
     out.println("</table>"); 

     %> 
     <a href = 'login.jsp'><input type='button' value='Cerrar sesion' name='logout' /></a> 





</body> 

+0

這也是錯的錯就錯'如果(valiLog == 「假」' - ?使用String.equals –

+0

什麼區別 –

+0

==是對象比較而String.equals是對象的內容比較 –

回答

0

怎麼會不爲空

ArrayList<Productos> listaProductos = new ArrayList(); 

if(listaProductos.isEmpty()) 

而不是使用Java在JSP學會使用JSTL。

,然後可以使用

<c:if test="${empty listaProductos}"> 

看到http://docs.oracle.com/cd/E17904_01/web.1111/e13712/reference.htm#WBAPP429

+0

我得到了一個N​​ullPointerException異常...我打算暫時使用JSP。在第一次嘗試時應該創建產品,因此產品被添加到if中。 –

+0

那麼JSTL代表JSP標準標籤庫,因此它是JSP – bmarkham