2016-05-10 4 views
0

Ich versuche, c: wähle tag zusammen mit c: wenn jstl-Tag im folgenden Code, aber der Ausdruck wird nicht korrekt ausgewertet. Ich habe ein Servlet, das den Bean-Verkäufer im Sitzungsumfang richtig einstellt.Verwenden von jstl <c:when> Tag bewertet Ausdruck nicht korrekt

<%@ 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> 

Der Code Servlet ist unten:

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); 
} 

}

Wenn die index.jsp Seite geladen wird, wird der Wert "none" anstelle des Werts von vorName "John" gedruckt . Ich kann nicht identifizieren, was ich hier möglicherweise falsch mache?

+0

deklariert Sie sagen "Wenn die index.jsp Seite geladen ist". Willst du sagen, dass du direkt zu index.jsp navigierst? Oder navigieren Sie zu Ihrem Servlet und werden dann an index.jsp weitergeleitet? – rickz

+0

@rickz dachte das gleiche, aber es kann nicht sein, denn die JSP ist in der WEB-INF-Ordner –

+1

Guter Punkt, Angelo. – rickz

Antwort

0

Nach weiteren Untersuchungen erkannte ich, dass der Ausdruck Sprachanweisung nicht einmal evakuiert wurde.

So wandte ich mich an die Dokumentation unter dem folgenden Link https://docs.oracle.com/javaee/1.4/tutorial/doc/JSPIntro7.html

Es erwähnt EL standardmäßig für Servlet-Spezifikation 2.3 und älter deaktiviert. Und tatsächlich habe ich eine ältere Version von Servlet-Spezifikation 2.3 in meiner web.xml

Verwandte Themen