至此,我们还有一些问题还没有澄清。首先,用户不能清除名字区域;而且如果用户在“age”区域键入一个不对的内容(不是一个效果的整型数值),Java异常错误就会发生。
现在,我们将使用Blazix标志库中的其它标志来解决这个问题。Blazie提供了一个blx:setProperty标志来解决这个问题。Blx:setProperty允许我们定义一个异常错误处理方法。如果有异常错误发生,我们可以为用户收集一个错误信息并且继续处理。
下面是我们修改后的SaveName.jsp,它可以处理任何错误。它不仅可以显示GetName.jsp并且在其上可以键入正确的数据,而且自动地连接到NextPage.jsp:
<%@ taglib prefix="blx" uri="/blx.tld" %>
<%! boolean haveError; StringBuffer errors;
String value, Exception ex ) { haveError = true; if ( errors == null ) errors = new StringBuffer(); else errors.append( "<P>" ); errors.append( "<P>Value for field \"" + field + "\" is invalid." ); if ( ex instanceof java.lang.NumberFormatException ) errors.append( " The value must be a number." ); } %> <% // Variables must be initialized outside declaration! haveError = false; errors = null; %> --------------- <BODY> <jsp:useBean id="user" class="UserData" scope="session"/> <blx:setProperty name="user" property="*" onError="errorHandler"/> <% if ( haveError ) { out.println( errors.toString()); pageContext.include( "GetName.jsp" ); } else pageContext.forward( "NextPage.jsp" ); %> </BODY> </HTML> 这里要注意haveError和errors必须每次都重新初始化,因为它们在声明的外部被初始化。 现在,如果一个错误发生在blx:setProperty处理的过程,我们就显示这个错误并再次回到GetName.jsp以使用户可以校正这个错误。如果没有错误发生,我们就自动让用户连接到NextPage.jsp。 |
正在阅读:JSP由浅入深(11)标记库JSP由浅入深(11)标记库
2004-02-14 09:33
出处:PConline
责任编辑:pjl
键盘也能翻页,试试“← →”键