如何从我的java bean中抛出异常

时间:2009-12-28 18:45:47

标签: java exception jsp javabeans

我在jsp-application中使用javaBean来存储表单值。这就是我将我的价值观带入我的bean的方式。此代码是我的form.jsp

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

我将“&lt;%”留下来不破坏stackoverflow上的代码显示。现在我得到了我的异常,例如,如果一个文本放在我的年龄字段中,那么类型对话会引发异常。

现在我想知道是否可以在我的bean的setter中抛出异常,并使用相同的try-catch-block捕获它。

示例形式我的bean :(我知道这甚至没有编译,但我希望你知道我想要什么)

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

我希望我明白我的观点。因为可以从form.jsp调用我的bean中的validAge()函数来验证值,但是如果我可以直接抛出一个Exception,以便form.jsp可以捕获它,那将会非常光滑。

这么久。    mantuko

3 个答案:

答案 0 :(得分: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,让servlet委托进行验证的业务/动作模型,收集您在EL中访问的请求范围中某种Map的所有错误消息。以方式在JSP中使用scriptlet。 JSTL在核心,fmt和函数标记库中提供了所需的漂亮everything

答案 1 :(得分:1)

1)声明要抛出的异常 2)“抛出新的例外”

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

答案 2 :(得分:0)

我更喜欢与该文本框的onblur事件关联的JavaScript验证方法。让JavaScript为您管理,而不是Java Bean。