0

JSFを使用する前は、次のコードがJSPファイルで機能していました。

<c:if test="${not (empty request.error)}">
    Error: ${request.getAttribute("error")}
</c:if>

現在、JSFを使用していると、次のエラーが発生します。

/login.xhtml @ 24,51 test = "$ {not(empty request.error)}" /login.xhtml @ 24,51 test = "$ {not(empty request.error)}":プロパティ'error' notタイプorg.apache.catalina.connector.RequestFacadeで見つかりました

ここでの問題/解決策は何ですか?エディターは何も下線を付けません。

login.xhtml全体:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                template="./template.xhtml"
                xmlns:c="http://java.sun.com/jsp/jstl/core">

    <ui:define name="userBar">
        <form method="POST" action="Login">
            <table>
                <tr>
                    <td>Login</td>
                    <td><input type="text" name="login" /></td>
                </tr>
                <tr>
                    <td>Password</td>
                    <td><input type="password" name="password" /></td>
                </tr>
                <tr>
                    <td colspan="2"><input type="submit" value="Login" /></td>
                </tr>
            </table>            
        </form>

        <c:if test="${not (empty request.error)}">
            Error: ${request.getAttribute("error")}
        </c:if>
    </ui:define>

    <ui:define name="content">
        content
    </ui:define>
</ui:composition>
4

3 に答える 3

3

JSF2/Facelets 以降、は現在関与しているオブジェクト#{request}を参照する暗黙の EL 変数です。JSF 2.0 での通信 - 暗黙的な EL オブジェクトHttpServletRequestも参照してください。

マネージド Bean の名前を変更する (または EL スコープでまったく同じ属性名で表示されるものは何でも) か、EL スコープ マップを介して明示的に参照する必要があります。リクエストスコープであると仮定すると、#{requestScope.request}代わりに使用する必要があります。

<c:if test="#{not empty requestScope.request.error}">
于 2012-07-12T02:25:06.930 に答える
0

これは「未設定値」ではなく、存在しないプロパティです。HttpRequest には「エラー」プロパティがありません。構文は、request.getAttribute("error")使用する必要があるものです。

于 2012-07-11T01:46:34.440 に答える