2012-12-27 13 views
5

jak mogę sprawdzić i użyć userLoggedIn, aby potwierdzić warunek. Jestem nowy i mam dużo wyszukiwań. musi być głupia pomyłka.JSTL i c: kiedy warunki testu

index.jsp

<div id="sign-in"> 
    <c:choose> 
     <c:when test="${userLoggedIn == 1}"> 
      Welcome <c:out value="${loginID}" /> | Logout 
     </c:when> 
     <c:otherwise>Log-in</c:otherwise> 
    </c:choose> 
</div> 

niektóre weryfikacja aplet

int userLoggedIn = 0; 

if(loginID.equals("[email protected]") && password.equals("guest")){ 
    userLoggedIn = 1; 
    getServletContext().getRequestDispatcher("/index.jsp").forward(request, response); 
    //  out.println("login successful"); 

} else { 
    // getServletContext().getRequestDispatcher("/login.jsp").forward(request, response); 
    out.println("login failed"); 
} 
+0

Na czym polega problem? –

+1

dlaczego userLoggedIn nie jest typu boolean? – BevynQ

Odpowiedz

7

trzeba przechowywać informacje w żądanym zakresie, który jest zwykle zakres sesja przypadku zalogowanych.

Dodaj następującą linię pouserLoggedIn = 1;.

request.getSession().setAttribute("userLoggedIn", userLoggedIn); 

To w zasadzie wszystko, co trzeba zmienić.


niezwiązane do konkretnego problemu, to int (i boolean jak komentował BevynQ) podejście jest raczej "prymitywne". Zwykle przechowujesz całą jednostkę User uzyskaną z DB w sesji. Na przykład.

User user = userService.find(username, password); 

if (user != null) { 
    request.getSession().setAttribute("user", user); 
    response.sendRedirect("home"); 
} else { 
    request.setAttribute("message", "Unknown login, please try again"); 
    request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response); 
} 

z

<c:when test="${not empty user}"> 

który umożliwia łatwy dostęp do wszystkich jego właściwości jak

<p>Welcome, <c:out value="${user.name}" /></p> 
+0

Należy również uzyskać dostęp w JSTL jako: - $ {sessionScope.userLoggedIn} ' –

+2

@Rohit: To niepotrzebne. Przeczytaj samouczek JSP/Servlet. Takie podejście jest konieczne tylko wtedy, gdy posiadasz ten sam atrybut również w zakresie strony lub wniosku, co w końcu byłoby po prostu kiepskim projektem. Zobacz także http://stackoverflow.com/tags/el/info – BalusC

+0

@BalusC .. O tak. Zapomniałem, że atrybut zostanie automatycznie przeszukany w kolejności. –