5

JavaHttpServletを介して2つの属性をJSPに送信しようとしています。問題は、JSPファイルで両方が0(数値)として表示されていることです。

これが私のRegisterDeveloper.javaファイルのdoGetメソッドです。

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

非常に単純で、ステップスルーすると、属性がリクエストに追加され、ブラウザが/register.jspページにリダイレクトされます。

register.jspページの問題の部分は次のとおりです。

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

何らかの理由で、リクエストに追加した属性はすべて「0」になりました。

ブラウザに表示されるエラーは次のとおりです。

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

関連する場合の私のweb.xml:

<?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>

私はTomcat6を使用しています。これはすべて非常に簡単に思えます。他のページでも非常によく似たコードが機能しているので、見逃したものを見つけるのに本当に苦労しています。

どんな助けでも、大いに感謝します。

/WEB-INF/lib/フォルダーにjavax.servlet.jsp.jstl-1.2.1.jarとjavax.servlet.jsp.jstl-api-1.2.1.jarがあります。

4

1 に答える 1

9

仕様から私はグーグルで検索しました

識別子は、Java識別子(たとえば、no-、no/など)に制限されます。

validation-errorはJava識別子ではなく、との減算演算validation ですerror。あなたはそれらを定義していないので、それらは定義されておりnull、これが適用されます:

1.7.1二項演算子-A{+、-、*} B■AとBがnullの場合、(Long)0を返します。

だから私はテストがになると思いif( (Long)0 == true )ます。

で試してみてくださいreq.setAttribute("validationError", false); ${validationError}

于 2013-02-06T12:28:23.870 に答える