2013-04-24 2 views
0

У меня есть JSP, в котором я использую <fmt:formatNumber>. Проблема в том, что мы не знаем, что значение, поступающее в JSP, будет числом или строкой. Если строка идет, она выдает NumberFormatException.JSP, JSTL, Check NaN

Я попытался посмотреть в JSTL, но не успел, где-то это было упомянуто, если я проверил значение == значение, оно возвращает false, если String, но не имеет успеха. См. Код ниже.

<fmt:formatNumber type="currency" currencySymbol="$" maxFractionDigits="2" minFractionDigits="2" >${primary.value}</fmt:formatNumber> 

Любая помощь будет оценена по достоинству.

Заранее спасибо.

+0

Это поможет, если вы включили больше кода, чтобы проблему можно было увидеть в контексте. Кроме того, почему у вас нет контроля над тем, что такое ценность? – JayDM

+0

Ценность исходит от разных поставщиков, поэтому у нас нет никакого контроля – Ritesh

+0

Возможный дубликат http://stackoverflow.com/questions/12482062/check-string-for-only-numbers-using-jstl –

ответ

1

Это может быть решение вашей проблемы. Вы получите исключение при попытке добавить строку в 0.

<c:catch var="catchString"> 
    <c:set value="${0 + primary.value}" /> 
</c:catch> 
<c:choose> 
<c:when test="${not empty catchString}"> 
    ${primary.value} 
</c:when> 
<c:otherwise> 
    <fmt:formatNumber type="currency" currencySymbol="$" maxFractionDigits="2" minFractionDigits="2" >${primary.value}</fmt:formatNumber> 
</c:otherwise> 
</c:choose> 
+0

Это сработало ... но есть ли у нас какое-либо другое решение. Я спрашиваю, так что у нас есть около 30 таких полей. Если вы можете предложить любой JSTL или что-то в этом роде, тогда количество строк кода будет меньше. – Ritesh

+0

Не можете ли вы поместить эти поля в цикл? Вы можете использовать тройной, чтобы избавиться от c: select-tag. – MMeersseman

+0

Я использую нижеуказанным меньше кода ' \t \t \t \t \t $ {primary.value} \t \t \t \t \t \t \t \t \t \t <с: если тест = "$ {не пусто catchString}"> \t \t \t \t \t $ {первично. стоимость} \t \t \t \t \t ' – Ritesh

0

Другим решением является создание библиотеки пользовательских тегов, чтобы проверить погоду вы имеете дело с строкой или с номером, или даже к вручную отформатируйте свой номер (на ваш выбор).

У меня нет времени, чтобы отработать пример для вас, но я нашел это Tutorial где они объясняют шаг за шагом о том, как реализовать все.

Edit: Подробнее @Oracle

Я надеюсь, что вы получите его на работу, если не дайте мне знать, и я постараюсь помочь вам завтра.

Смежные вопросы