【问题标题】:JSP Custom tags disables use of anything elseJSP 自定义标签禁止使用其他任何东西
【发布时间】:2011-04-04 16:30:52
【问题描述】:

我正在尝试使用 JSP 进行简单的登录,并且我有一个像这样的自定义标签

<h:mainwrapper>

里面有一些简单的 div……我想做的是在那个自定义标签中执行<%=error %>

我收到以下错误:

org.apache.jasper.JasperException: /login.jsp(38,8) Scripting elements ( <%!, <jsp:declaration, <%=, <jsp:expression, <%, <jsp:scriptlet ) are disallowed here.

代码示例:

    <h:mainwrapper>
        <h:topempty />
        <div style="margin: auto; width: 300px; height: 300px; border: 1px solid black; margin-top: 100px;">
            <div style="width: 170px; height: 250px; margin: auto; text-align: center;">

                <form action="LoginCheck" method="post">
                    <p>Login name:</p>
                    <input type="text" name="loginname" />
                    <p>Password:</p>
                    <input type="password" name="loginpass" /><br />
                    <input type="submit" name="submit" value="Login" />
                </form>

                <div style="color:#f00;">
                    <%=error %>
                </div>
            </div>

        </div>
    </h:mainwrapper>

我是否必须启用某些功能才能允许这样做?

【问题讨论】:

    标签: html jsp jsp-tags


    【解决方案1】:

    使用 EL。假设error被设置为页面、请求、会话或应用范围内的属性,那么你可以这样做

    ${error}
    

    【讨论】:

    • 太棒了!另一个问题;如果你想用 EL 遍历一个列表呢?
    • 使用 JSTL &lt;c:forEach&gt;。有关更多信息,另请参阅此答案:stackoverflow.com/questions/3177733/…
    • 这很简单。只需将 JAR 放到类路径中(如果您的 servletcontainer 还没有附带它,例如 Tomcat)并在 JSP 顶部声明 taglib。就这样。它至少比使用丑陋的 scriptlet好多了
    • 我希望我仍然可以使用 Java 编码风格而不是 JSTL。毕竟 - 这就是为什么我想坚持使用 JSP 而不是 JSF(这是 IMO,比 JSP 太重且需要可配置)。感谢您的澄清:)
    • JSF 让它变得更加简单,当然如果您使用 JSP 的后续 Facelets。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-24
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多