正在阅读:JSP由浅入深(11)标记库JSP由浅入深(11)标记库

2004-02-14 09:33 出处:PConline 作者:ZSC 责任编辑:pjl
至此,我们还有一些问题还没有澄清。首先,用户不能清除名字区域;而且如果用户在“age”区域键入一个不对的内容(不是一个效果的整型数值),Java异常错误就会发生。   现在,我们将使用Blazix标志库中的其它标志来解决这个问题。Blazie提供了一个blx:setProperty标志来解决这个问题。Blx:setProperty允许我们定义一个异常错误处理方法。如果有异常错误发生,我们可以为用户收集一个错误信息并且继续处理。   下面是我们修改后的SaveName.jsp,它可以处理任何错误。它不仅可以显示GetName.jsp并且在其上可以键入正确的数据,而且自动地连接到NextPage.jsp: <%@ taglib prefix="blx" uri="/blx.tld" %>

<%!

boolean haveError;

StringBuffer errors;


public void errorHandler( String field,

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。
键盘也能翻页,试试“← →”键

相关文章

关注我们

最新资讯离线随时看 聊天吐槽赢奖品