我在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
答案 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。