【问题标题】:Nested expression in JSP/JSTLJSP/JSTL 中的嵌套表达式
【发布时间】:2010-07-28 08:29:35
【问题描述】:

我将 JSP 用于视图,并将 Spring MVC 3.0 用于控制器。 在我的 JSP 中,我想显示当前的 DateTime,为此我有以下代码...

<c:set var="dateTimeDisplayFormat" value='<spring:message code="display.dateFormat" />'/>

<c:set var="currentDateTime" 
    value='<%= new SimpleDateFormat(${dateTimeDisplayFormat}).format(new Date()) %>' 
    scope="page" />

现在,问题是 JSTL 无法识别我的 SimpleDateFormat 实例化的嵌套标记。我希望将格式字符串(从“dateTimeDisplayFormat”变量中获得)传递给 SimpleDateFormat 构造函数。

有人可以建议我如何在上面的 c:set 语句中为 SimpleDateFormat 编写嵌套构造函数吗?

感谢期待!

【问题讨论】:

    标签: java jsp jstl


    【解决方案1】:

    &lt;c:set&gt; 可以从标签内容中获取其值,而不是从value 属性中获取:

    <c:set var="dateTimeDisplayFormat">
        <spring:message code="display.dateFormat" />
    </c:set>
    
    <c:set var="currentDateTime" scope="page">
        <%= new SimpleDateFormat(${dateTimeDisplayFormat}).format(new Date()) %>
    </c:set>    
    

    更好的是,您根本不需要&lt;c:set&gt;,因为&lt;spring:message&gt;&lt;fmt:formatDate&gt; 都可以为您将它们的结果存储在变量中:

    <spring:message code="display.dateFormat" var="dateTimeDisplayFormat"/>
    <fmt:formatDate pattern="${dateTimeDisplayFormat}" var="currentDateTime" scope="page"/>
    

    【讨论】:

    • 非常感谢 Skaffman,但是您提出的第一个解决方案没有用 :(。它给了我一个异常
      PWC6197:jsp 文件中的第 27 行发生错误: /WEB-INF/views/common/header.jsp PWC6199: Generated servlet error: Syntax error on token "$", AssignmentOperator expected after this token 感谢您让我看到第二种方法,但是现在确实显示了日期在页面上,我所有剩余的代码都是相同的,即
    • 天啊!我太笨了,我没有在页面顶部包含格式 JSTL 库,因此第二种方法不起作用。现在它完美地显示了日期,非常感谢 Skaffman 的巧妙方法!
    • 答案在精神上是正确的,但语法错误来自将scriptlet与el混合。这是文字 java 代码(啊,不应该发生在 JSP 中),所以可以(但不应该)像这样访问 el 变量:&lt;%= new SimpleDateFormat(pageContext.getAttribute("dateTimeDisplayFormat")).format(new Date()) %&gt;
    • 我同意文字 java 代码是一团糟,但是当我需要时,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多