2016-05-10 2 views
0

Я пытаюсь использовать c: выбрать тег вместе с c: когда тег jstl в следующем коде, но выражение не оценивается правильно. У меня есть сервлет, который правильно устанавливает бонуса Продавца в объеме сеанса.Использование jstl <c:when> тег не оценивает выражение правильно

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
<!DOCTYPE html> 
<html lang="en"> 
    <c:choose> 
     <c:when test="${not empty sessionScope.seller}"> 
      <c:out value="${seller.firstName}"/> 
     </c:when> 
     <c:otherwise> 
      <c:out value="none"/> 
     </c:otherwise> 
    </c:choose> 
</html> 

код сервлета ниже:

package com.senachat.presentation; 

import java.io.IOException; 

import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 

import com.senachat.domain.Seller; 

public class SenachatServlet extends HttpServlet{ 

@Override 
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 

    resp.setContentType("text/html"); 

    Seller seller = new Seller(); 
    seller.setFirstName("John"); 

    HttpSession session = req.getSession(); 
    session.setAttribute("seller", seller); 

    RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/jsp/index.jsp"); 
    dispatcher.forward(req, resp); 
} 

@Override 
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
    this.doGet(req, resp); 
} 

}

Когда страница index.jsp загружается значение «никто» не печатается вместо значения ПгвЬЫате «Джон» , Я не могу определить, что я, возможно, делаю неправильно здесь?

+0

Вы говорите: «Когда загружается страница index.jsp». Вы хотите сказать, что просматриваете непосредственно index.jsp? Или перейдите на свой сервлет, а затем перенаправлены на index.jsp? – rickz

+0

@ rickz думал то же самое, но это не может быть потому, что jsp находится в папке WEB-INF –

+1

Хорошая точка, Анджело. – rickz

ответ

0

После дальнейших исследований я понял, что выражение языка выражения не было даже вызвано.

Поэтому я обратился к документации по следующей ссылке https://docs.oracle.com/javaee/1.4/tutorial/doc/JSPIntro7.html

Это ЭЛ упоминалось отключен по умолчанию для сервлета спецификации 2.3 и старше. И, конечно же, я объявил более старую версию сервлета spec 2.3 в своем web.xml