Struts2 -s:文本标记名称不支持运行时表达式

时间:2016-10-09 09:01:54

标签: jsp struts2 jstl ognl struts-tags

我需要在当前year内打印出一段文字,我的代码:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="s" uri="/struts-tags" %>

<jsp:useBean id="now" class="java.util.Date" />
<fmt:formatDate var="year" value="${now}" pattern="y" />
<p>
    <s:text name="%{getText('app.footer', {${year}})}" />
</p>

错误是

  

“name”不支持运行时表达式。

如果不在操作中创建其他类或变量,我如何安排呢?

1 个答案:

答案 0 :(得分:3)

您只能使用Struts2代码执行此操作,无需使用fmt代码。

<s:bean var="date" name="java.util.Date" />
<s:date var="year" name="#date" format="y" />
<p>
    <s:text name="app.footer">
        <s:param value="#year" />
    </s:text>
</p>

您无法在S2标记内使用${}<s:text>标记会呈现I18n短信,无需在其中使用getText方法。