2009-12-28 7 views
1

Я использую javaBean в своем jsp-приложении для хранения значений формы. Вот как я получаю свои ценности в своем компоненте. Этот код является частью моей form.jspКак выбросить исключение из моего java bean

try { 
     <jsp:setProperty name="formparam" property="*" /> 
} 
catch (Exception e){ error = true; } 

Я покинул «<%», чтобы не сломать дисплей кода на StackOverflow. Теперь я получаю свое исключение, если, например, один помещает текст в поле возраста, так что диалог типа вызывает исключение.

Теперь я хотел бы знать, можно ли исключить исключение в установщике моего компонента, чтобы поймать его с помощью того же блока try-catch.

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

public void setAge(int a) { 
    if (this.validAge(a)) 
     age = a; 
    else 
     throw Exception; 
} 

Я надеюсь, что я получаю мою точку зрения. Из-за этого можно вызвать функцию validAge() в моем bean-компоненте из form.jsp, чтобы проверить значение, но если бы я мог напрямую выбросить исключение, чтобы form.jsp мог его поймать, это было бы так много slicker.

До сих пор. mantuko

+0

И что случилось, когда вы пытались это сделать? – kdgregory

+1

Это плохой дизайн. Вы не должны писать код scriplet, как это в JSP. – duffymo

ответ

0

1) объявить, что исключение будет брошено 2) «бросить новый Exception»

public void setAge(int a) throws Exception { 
    if (this.validAge(a)) 
    age =a ; 
    else 
    throw new Exception("...") 
} 
+0

Черт, я просто пропустил часть «Исключение бросков». Спасибо. Это хорошо работает для меня. Чтобы немного прояснить ситуацию: Я работаю над задачей для своего класса WebEngineering, и я только в начале. Поэтому я не могу использовать JavaScript для проверки, потому что я собираюсь изучить JSP. Мы не используем JSLT (что бы это ни было, я буду читать позже :)), и я просто знаю, что существуют taglib, но я просто не знаю, что они делают и как их использовать. Поэтому ответ BalusC выше моих знаний. Мне пришло в голову, что скриптлеты, вероятно, не подходят. Но до сих пор у меня нет альтернативы. Thx для всех. – mantuko

4

Просто дайте способ бросить его и использовать JSTL c:catch, чтобы справиться с этим.

<c:catch var="error"> 
    <jsp:setProperty name="formparam" property="*" /> 
</c:catch> 

<c:if test="${not empty error}"> 
    <p>Error: ${error}</p> 
</c:if> 

Это говорит о том, что JSP является неправильным местом для проведения проверки. Скорее отправьте форму на Servlet, позвольте сервлету делегировать бизнес/модель действия, которая выполняет валидацию, собрать все сообщения об ошибках в виде Map в области запроса, к которой вы обращаетесь в EL. Делать в нет Способ использования сценариев в JSP. JSTL обеспечивает довольно everything вам нужно в ядре, fmt и taglib функций.

0

Я бы предпочел методы проверки JavaScript, связанные с событием onblur для этого текстового поля. Пусть JavaScript управляет этим для вас, а не Java Beans.