無(wú)為則可為,無(wú)為則至深!
接看,在同上的包中加入ProductConfirm-conversion.properties,代碼如下:
再在struts.xml文件中配置ProductConfirm Action,代碼片段如下:
在WEB文件夾下新建AddProducts.jsp,內(nèi)容如下:
在同樣的文件夾下創(chuàng)建ShowProducts.jsp,內(nèi)容如下:
發(fā)布運(yùn)行應(yīng)用程序,在瀏覽器中鍵入http://localhost:8080/Struts2_Converter/AddProducts.jsp,出現(xiàn)如圖4所示頁(yè)面:圖4 添加產(chǎn)品頁(yè)面
按圖4所示,填寫表單,按“Submit”提交,出現(xiàn)圖5所示頁(yè)面:圖5 查看產(chǎn)品頁(yè)面
查看服務(wù)器的控制臺(tái),有如下輸出:
上面的代碼并不復(fù)雜,但有幾點(diǎn)需要說(shuō)明:
不知道大家在運(yùn)行上面的例子時(shí),有沒(méi)有填錯(cuò)日期或數(shù)字情況,又或者您有沒(méi)有思考過(guò)這種情況?如果還沒(méi)有嘗試的朋友可以試一下,在第一行的Price和Date of production中輸入英文字母,然后按“Submit”提交。你會(huì)看到頁(yè)面為空白,再看一下服務(wù)器的控制臺(tái)輸出,有如下語(yǔ)句: 警告: No result defined for action tutorial.ProductConfirm and result input,它提示我們沒(méi)有為Action定義輸入結(jié)果,所以,我們應(yīng)該在源代碼文件夾下的struts.xml中的ProductConfirm Action中加入以下代碼:
重新加載應(yīng)用程序,刷新瀏覽器重新提交請(qǐng)求,這時(shí)頁(yè)面返回AddProducts.jsp,格式錯(cuò)誤的輸入框的值被保留,如下圖6所示:圖6 沒(méi)有提示的錯(cuò)返回頁(yè)面
當(dāng)然,我們還可以在頁(yè)面上加上錯(cuò)誤提示信息,通過(guò)在AddProducts.jsp的“<body>”后,加入下面代碼可以實(shí)現(xiàn):
刷新瀏覽器,重新提交請(qǐng)求,出現(xiàn)如圖7所示頁(yè)面:圖7 帶提示的錯(cuò)返回頁(yè)面
以上的功能的都是通過(guò)Struts 2.0里的一個(gè)名為conversionError的攔截器(interceptor)工作,它被注冊(cè)到默認(rèn)攔截器棧(default interceptor stack)中。Struts 2.0在轉(zhuǎn)換出錯(cuò)后,會(huì)將錯(cuò)誤放到ActionContext中,在conversionError的作用是將這些錯(cuò)誤封裝為對(duì)應(yīng)的項(xiàng)錯(cuò)誤(field error),因此我們可以通過(guò)<s:fielderror />來(lái)將其在頁(yè)面上顯示出來(lái)。另外,大家看第二和第三行的Price都被賦為0.0的值,而第一行則保留其錯(cuò)誤值。這同樣是conversionError的功勞——沒(méi)有出錯(cuò)的行調(diào)用的products[index].price(默認(rèn)值為0.0),而出錯(cuò)的行則會(huì)被賦為頁(yè)面所提交的錯(cuò)誤值,這樣可以提供更好的用戶體驗(yàn)。
Struts 2.0的轉(zhuǎn)換器簡(jiǎn)化的WEB應(yīng)用程序的模型,為我們的編程帶來(lái)極大的方便。
Copyright @ 草兒 Powered by: .Text and ASP.NET Theme by: .NET Monster