JSP由淺入深(11-2)
發表時間:2024-02-08 來源:明輝站整理相關軟件相關文章人氣:
[摘要]至此,我們還有一些問題還沒有澄清。首先,用戶不能清除名字區域;而且如果用戶在“age”區域鍵入一個不對的內容(不是一個效果的整型數值),Java異常錯誤就會發生。 現在,我們將使用Blazix標志庫中的其它標志來解決這個問題。Blazie提供了一個blx:setProperty標志來解決這個問題...
至此,我們還有一些問題還沒有澄清。首先,用戶不能清除名字區域;而且如果用戶在“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。