首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts2中批量打包对象(续)

2012-10-13 
struts2中批量封装对象(续)由于第一个不一编辑就出莫名其妙的问题,所以就写了个续:??转换错误处理不知道大

struts2中批量封装对象(续)

由于第一个不一编辑就出莫名其妙的问题,所以就写了个续:

?

?

转换错误处理

不知道大家在运行上面的例子时,有没有填错日期或数字情况,又或者您有没有思考过这种情况?如果还没有尝试的朋友可以试一下,在第一行的Price和Date of production中输入英文字母,然后按“Submit”提交。你会看到页面为空白,再看一下服务器的控制台输出,有如下语句:

严重: Could not find action or result No result defined for action product.ProductConfirm and result input - action,

?

它提示我们没有为Action定义输入结果,

所以,我们应该在源代码文件夹下的struts.xml中的ProductConfirm Action中加入以下代码:

<result name="input">/addproducts.jsp</result>


?

重新加载应用程序,刷新浏览器重新提交请求,这时页面返回addproducts.jsp,格式错误的输入框的值被保留,如下图所示:

struts2中批量打包对象(续)
?

?

?

?

当然,我们还可以在页面上加上错误提示信息,通过在addproducts.jsp的“<body>”后,加入下面代码可以实现:

<div style="color:red">
? ? <s:fielderror />
</div>

刷新浏览器,重新提交请求,出现如图所示页面:


struts2中批量打包对象(续)
?

?

以上的功能的都是通过Struts 2.0里的一个名为conversionError的拦截器(interceptor)工作,它被注册到默认拦截器栈(default interceptor stack)中。Struts 2.0在转换出错后,会将错误放到ActionContext中,在conversionError的作用是将这些错误封装为对应的项错误(field error),因此我们可以通过<s:fielderror />来将其在页面上显示出来。另外,大家看第二和第三行的Price都被赋为0.0的值,而第一行则保留其错误值。这同样是conversionError的功劳——没有出错的行调用的products[index].price(默认值为0.0),而出错的行则会被赋为页面所提交的错误值,这样可以提供更好的用户体验。

?

?

热点排行