[英]How to register a renderer for a class in JSP/JSTL?
我想知道是否有一种方法可以为JSP / JSTL中的特定类注册默认渲染器。
我在页面上显示表格报告,其中每个表行都以通用List<Object>
到达。 由于我事先不知道特定项目的类型,因此我将使用<c:out ...>
输出值。 据我所知,这样做确实toString()
。
现在,我想根据项目的类别更改格式,例如更改十进制数字的格式。 当然我不能使用<fmt:formatXXX ...>
因为我事先不知道类型。
我相信这在JSF中是可能的。 但是有没有办法在JSP中实现呢?
我最好的选择是将List<Object>
转换为List<String>
并在我的控制器类中应用格式,但这比注册renederer IMHO稍微好一点。
JSP没有“渲染器”的概念,它不是基于组件的MVC框架。 但是您可以为此创建一个自定义标签 。
另外,您可以使用普通的JSTL做类似的事情,只需检查Object#getClass()
即可确定EL对象的类:
<c:choose>
<c:when test="${item['class'].name == 'java.lang.Integer'}">
<fmt:formatNumber value="${item}" type="number" />
</c:when>
<c:when test="${item['class'].name == 'java.math.BigDecimal'}">
<fmt:formatNumber value="${item}" type="currency" />
</c:when>
<c:when test="${item['class'].name == 'java.util.Date'}">
<fmt:formatDate value="${item}" type="date" />
</c:when>
<c:otherwise>
<c:out value="${item}" />
</c:otherwise>
</c:choose>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.