2013-02-06 18 views
5

Sto tentando di inviare due attributi a un JSP tramite un HttpServlet Java. Il problema è che entrambi appaiono come 0 (il numero) nel mio file JSP.Gli attributi nella richiesta JSP diventano 0

Ecco il metodo doGet nel mio file RegisterDeveloper.java:

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     // Fill up default attributes for the template 
     req.setAttribute("validation-error", false); 
     req.setAttribute("validation-error-message", ""); 

     // Redirect to register page 
     req.getRequestDispatcher("/register.jsp").forward(req, resp); 
} 

molto semplice e quando faccio un passo attraverso gli attributi sono aggiunti alla richiesta e il browser viene reindirizzato alla pagina di /register.jsp.

Qui è la parte problema della pagina register.jsp:

<c:if test="${validation-error}"> 
    <div id="validationError"> 
     <span id="errorText"> 
      ${validation-error-message} 
     </span> 
    </div> 
</c:if> 

Per qualche motivo gli attributi che ho aggiunto alla richiesta sono diventati tutti '0'.

L'errore visualizzato nel browser è:

HTTP Status 500 - javax.el.ELException: Cannot convert 0 of type class java.lang.Long to class java.lang.Boolean 

mio web.xml in caso è rilevante:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 

    <display-name>RServer</display-name> 
    <welcome-file-list> 
     <welcome-file>homepage.html</welcome-file> 
    </welcome-file-list> 

    <servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>*.css</url-pattern> 
    </servlet-mapping> 

    <servlet> 
     <servlet-name>RegisterDeveloper</servlet-name> 
     <servlet-class>com.steven.RegisterDeveloper</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>RegisterDeveloper</servlet-name> 
     <url-pattern>/register</url-pattern> 
    </servlet-mapping> 

</web-app> 

sto usando Tomcat6. Tutto ciò sembra molto semplice, e ho un codice molto simile che funziona su altre pagine, quindi mi sto davvero sforzando di vedere cosa mi è mancato!

Qualsiasi aiuto, molto apprezzato.

ho javax.servlet.jsp.jstl-1.2.1.jar e javax.servlet.jsp.jstl-api-1.2.1.jar nel mio/WEB-INF lib/cartella/..

risposta

9

da un specification I googled

un identificatore è vincolato ad essere un identificatore Java - per esempio, no -, no /, ecc

validation-error non è un identificatore Java, ma un'operazione di sottrazione per validation e error. Dal momento che non sono stati definiti quelli, sono null e questo vale:

1.7.1 Gli operatori binari - A {+, -, *} B ■ Se A e B sono nulli, ritorno (Long) 0

Quindi immagino che il test diventi if((Long)0 == true).

Prova con req.setAttribute("validationError", false);${validationError}

+0

che è stato! Non sono sicuro del perché avessi i trattini nei nomi delle variabili ... grazie mille! –