代码之家  ›  专栏  ›  技术社区  ›  Greg Mattes

JSP表达式语言错误行为?

  •  5
  • Greg Mattes  · 技术社区  · 16 年前

    我有一个JSP,它使用这样的bean:

    <jsp:useBean id="helper"
                 type="com.example.SomeType"
                 scope="request"/>
    

    helper

    <!-- This works properly, but could fail silently if the bean name is incorrect. -->
    <div><p>Here's some stuff: ${helper.stuff}</div>
    

    ,我注意到了

    <!-- Wrong name! "foo" should be "helper" but no error is observed (other than missing ouput)! -->
    <div><p>Here's some stuff: ${foo.stuff}</div>
    

    :

    <!-- Wrong name, but an error is raised. -->
    <div><p>Here's some stuff: <jsp:getProperty name="foo" property="stuff"/></div>
    

    在这种情况下,日志会记录此条目:

    SEVERE: requestURI: /some.jsp servletName: jsp statusCode: 500
    org.apache.jasper.JasperException: Attempted a bean operation on a null object.
    

    jsp:getProperty

    <!-- Works properly, protects me from an incorrect name, but is more verbose than EL. -->
    <div><p>Here's some stuff: <jsp:getProperty name="helper" property="stuff"/></div>
    

    2 回复  |  直到 16 年前
        1
  •  5
  •   McDowell rahul gupta    16 年前

    Expression Language Specification Version 2.1 .

      • 被调用以启动此表达式

        2
  •  2
  •   Gareth Davis    16 年前

    ${helper}的计算结果为null,因此EL只返回“”,而不尝试计算表达式的其余部分。

    ${myBean.property1.name}
    

    <c:if test="${not empty myBean.property1}">${myBean.property1.name}</c:if>
    
    推荐文章