如何使用JSTL标记将int值设置为变量?

时间:2015-06-12 08:20:05

标签: jsp jstl cq5

每当做<c:set var="emp"><cq:text property="empid" /></c:set>总是给我字符串。但是var假设返回'int'。有没有得到'int'而不是'string'

由于

2 个答案:

答案 0 :(得分:3)

您可以使用<fmt:parseNumber>标记,该标记已在CQ5中提供(<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>库由global.jsp引用),这是避免scriptlet的好事。此示例详见http://www.tutorialspoint.com/jsp/jstl_format_parsenumber_tag.htm

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<html>
<head>
  <title>JSTL fmt:parseNumber Tag</title>
</head>
<body>
<h3>Number Parsing:</h3>
<c:set var="balance" value="1250003.350" />

<fmt:parseNumber var="i" type="number" value="${balance}" />
<p>Parsed Number (1) : <c:out value="${i}" /></p>
<fmt:parseNumber var="i" integerOnly="true" 
                       type="number" value="${balance}" />
<p>Parsed Number (2) : <c:out value="${i}" /></p>

</body>
</html>
  

这将产生以下结果:

     

号码解析:

     

解析数(1):1250003.35

     

解析数(2):1250003

答案 1 :(得分:0)

您正在使用<cq:text>标记,该标记本身就是一个字符串。请尝试以下方法:

<c:set var="emp" value="${properties['empid']}"/>

如果属性是CRX中的数字,那么它也应该返回一个数字。否则,您需要使用scriptlet来读取属性类型safe:

<%
int empid = properties.get("empid", Integer.class);
%>