Это немного расстраивает, у меня есть:
@RequestMapping(value = "", method = RequestMethod.GET)
public String getFoo(ModelMap modelMap) {
// omissions
modelMap.addAttribute("myVar", 1);
return bar;
}
В моем jsp есть:
<c:set var="otherVar" value="${7-3}"/> // calculation
Этот myVar и другие Var я хочу использовать для некоторых вычислений. Но что-то не так с myVar, я не могу использовать его в математическом Math.min () без лишних вещей.
Работает, страница загружается правильно, выводится разумное значение:
${Math.min(10, myVar - 0)}
${Math.min(otherVar, myVar - 0)}
${Math.min('1', myVar)}
${10 > myVar ? myVar : 10}
${Math.min(10, otherVar)}
${Double.valueOf(myVar)}
${Integer.valueOf(myVar)}
${Math.min(Integer.valueOf(otherVar), Integer.valueOf(myVar))}
${Math.min(Double.valueOf(otherVar), Double.valueOf(myVar))}
${Math.min('1', Integer.valueOf(myVar))}
Не работа: (я получаю пустую страницу, плохо знакомы с jsp, поэтому навыки отладки низкие)
${Math.min(1, myVar)}
${Math.min(otherVar, myVar)} // This is the line I'd want, and which took a long time until I found not working
${myVar.class.simpleName} // This is probably just junk, but it conveys the main line in my debugging efforts
${Math.min(1, Integer.valueOf(myVar))}
${Math.min(1, Double.valueOf(myVar))}
Что случилось? Почему так себя ведет, какой тип / класс myVar? Вышеприведенные результаты не очень хороши, поскольку они являются либо обычной строкой, либо целым числом.
Редактировать / обновить:
${Math.min(myVar, Integer.valueOf(1))}
Так что это работает ... так что это myVar, который целое число ... и значения, установленные с помощью <c:set>
, которые являются ... строками? всегда? или что-то другое? примитив int как-нибудь?
Редактировать / обновить 2:
нет ок
<c:set var="otherVar" value="${Integer.valueOf(7-3)}"/>
${Math.min(myVar, otherVar)}
работает. Так что просто myVar - это просто класс Integer, который все портит?