user2268507
user2268507

Reputation:

Call Session Attributes in JSP

I currently have the following:

HttpSession session = request.getSession();         
String discountError = (String) session.getAttribute("discountError");

if (discountError.equals("true")){
    session.setAttribute("discountAdded", "false");
    forwardPage = "DiscountEnd.jsp";

}
else if (discountError.equals("false")){
    session.setAttribute("discountAdded", "true");
    forwardPage = "Confirm.jsp";                
}

JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ page session="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
          "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Discount(s) Added Successfully</title>
</head>

<body>

<c:choose>
    <c:when test="${discountAdded == 'true'}">
        <p align="center">  
            All Discount(s) added successfully!     
        </p>
    </c:when>
    <c:when test="${discountAdded == 'false'}">
        <p align="center">
            Error Found! No Discounts added!
        </p>
    </c:when>
</c:choose>

<br>
<form action='HotelOwnerController' method='POST' style="text-align:center">
    <input  type="submit" name="action" value="Back to Welcome Screen"/>
</form>

When I get to the JSP page, I am finding that the discountAdded if condition is not being evaluated.

Would someone know how I can read session attributes in a JSP page?

Upvotes: 0

Views: 4163

Answers (3)

mohamedrias
mohamedrias

Reputation: 18566

You can access the session attributes using sessionScope in your JSP.

So you need to call like this: ${sessionScope.discountAdded == 'true'}

<c:choose>
    <c:when test="${sessionScope.discountAdded == 'true'}">
        <p align="center">  
            All Discount(s) added successfully!     
        </p>
    </c:when>
    <c:when test="${sessionScope.discountAdded == 'false'}">
        <p align="center">
            Error Found! No Discounts added!
        </p>
    </c:when>
</c:choose>

Suggestion:

If discountAdded is going to contain only boolean value, then instead of <c:when> conditions, use <c:otherwise> for the another condition.

 <c:choose>
        <c:when test="${sessionScope.discountAdded == 'true'}">
            <p align="center">  
                All Discount(s) added successfully!     
            </p>
        </c:when>
        <c:otherwise>
            <p align="center">
                Error Found! No Discounts added!
            </p>
        </c:otherwise>
    </c:choose>

Upvotes: 0

Aditya Ekbote
Aditya Ekbote

Reputation: 1553

No, when session varialbles are catched in jsp page, it comes in "Object" data type. we have to parse them to String. For that we can use either .toString() method or we can cast it using

String str=(String)session.getAttribute("session_name");

OR

String str=(String)session.getAttribute("session_name");

For your code I suggest use sessionScope

<c:choose>
<c:when test="${sessionScope.discountAdded == 'true'}">
    <p align="center">  
        All Discount(s) added successfully!     
    </p>
</c:when>
<c:when test="${sessionScope.discountAdded == 'false'}">
    <p align="center">
        Error Found! No Discounts added!
    </p>
</c:when>

Upvotes: 2

Anoop Joseph
Anoop Joseph

Reputation: 11

In JSP we can access session variable as follows:

<%
String str=session.getAttribute("session_name");

%>

Upvotes: 1

Related Questions