JSP由淺入深(11-2)
發(fā)表時(shí)間:2024-06-05 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]至此,我們還有一些問題還沒有澄清。首先,用戶不能清除名字區(qū)域;而且如果用戶在“age”區(qū)域鍵入一個(gè)不對的內(nèi)容(不是一個(gè)效果的整型數(shù)值),Java異常錯(cuò)誤就會發(fā)生! ‖F(xiàn)在,我們將使用Blazix標(biāo)志庫中的其它標(biāo)志來解決這個(gè)問題。Blazie提供了一個(gè)blx:setProperty標(biāo)志來解決這個(gè)問題...
至此,我們還有一些問題還沒有澄清。首先,用戶不能清除名字區(qū)域;而且如果用戶在“age”區(qū)域鍵入一個(gè)不對的內(nèi)容(不是一個(gè)效果的整型數(shù)值),Java異常錯(cuò)誤就會發(fā)生。
現(xiàn)在,我們將使用Blazix標(biāo)志庫中的其它標(biāo)志來解決這個(gè)問題。Blazie提供了一個(gè)blx:setProperty標(biāo)志來解決這個(gè)問題。Blx:setProperty允許我們定義一個(gè)異常錯(cuò)誤處理方法。如果有異常錯(cuò)誤發(fā)生,我們可以為用戶收集一個(gè)錯(cuò)誤信息并且繼續(xù)處理。
下面是我們修改后的SaveName.jsp,它可以處理任何錯(cuò)誤。它不僅可以顯示GetName.jsp并且在其上可以鍵入正確的數(shù)據(jù),而且自動(dòng)地連接到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必須每次都重新初始化,因?yàn)樗鼈冊诼暶鞯耐獠勘怀跏蓟?br>
現(xiàn)在,如果一個(gè)錯(cuò)誤發(fā)生在blx:setProperty處理的過程,我們就顯示這個(gè)錯(cuò)誤并再次回到GetName.jsp以使用戶可以校正這個(gè)錯(cuò)誤。如果沒有錯(cuò)誤發(fā)生,我們就自動(dòng)讓用戶連接到NextPage.jsp。