至此,我們還有一些問題還沒有澄清。首先,用戶不能清除名字區域;而且如果用戶在“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>