从自定义JSP标记导出作用域变量
在JSTL从自定义JSP标记导出作用域变量,jsp,jstl,jsp-tags,var,Jsp,Jstl,Jsp Tags,Var,在JSTLfmt标记库中是标记formatDate,它具有一个可选属性var。使用formatDate标记时,可以通过var属性传入一个字符串,该属性指定将要创建的变量的名称,其值将是格式化的日期字符串 不幸的是,Java(从Java8开始)不支持我需要的汤加和萨摩亚地区。因此,一位同事创建了一个自定义日期格式标签,该标签基本上只使用fmt:formatDate对日期进行格式设置,然后(在汤加和萨摩亚的情况下)用适当的翻译替换日期名和月份名值。但是,这个自定义标记只输出(使用c:out)结果,我
fmt
标记库中是标记formatDate
,它具有一个可选属性var
。使用formatDate
标记时,可以通过var
属性传入一个字符串,该属性指定将要创建的变量的名称,其值将是格式化的日期字符串
不幸的是,Java(从Java8开始)不支持我需要的汤加和萨摩亚地区。因此,一位同事创建了一个自定义日期格式标签,该标签基本上只使用fmt:formatDate
对日期进行格式设置,然后(在汤加和萨摩亚的情况下)用适当的翻译替换日期名和月份名值。但是,这个自定义标记只输出(使用c:out
)结果,我想增强自定义标记以能够创建一个变量,就像fmt:formatDate
那样。不幸的是,我不知道怎么做
c:set
不允许在其var
属性中使用表达式,并且由于某些原因,pageContext
在自定义标记文件(date formatter.tag)中为空
下面是我对标记定义的定义,减去无关的细节(假设包括c
和fmt
taglib,以及dateFormatterLocale
变量):
...
[翻译日名和月名的材料]
...
在所需范围映射上使用
和${var}
上的属性
例如,如果您需要将其限定为请求范围:
<c:set target="${requestScope}" property="${var}" value="${dfFormattedDate}" />
或页面范围:
<c:set target="${pageScope}" property="${var}" value="${dfFormattedDate}" />
<c:set target="${pageScope}" property="${var}" value="${dfFormattedDate}" />