webwork对错误消息的支持:
程序员文章站
2022-06-01 19:29:58
...
对错误消息的支持:
在WebWork 2中, 有两类错误消息: 字段错误消息和活动错误消息. 字段错误消息代表某一控件的问题并显示在控件中. 许多标签支持显示这种消息. 另一方面活动错误消息代表活动执行的问题. 在Web应用中很多事物会导致错误, 尤其是在依赖于外部资源的应用中如数据库, 远程Web服务, 或其他在活动执行期间可能不可用的资源. 能否优雅的处理错误并向用户提供有用的消息通常是用户体验好与坏的区别.
当这种错误发生时, 把消息从表单控件中分离出来单独显示更为合适. 下例中, 我们将创建一个可以用列表现活动错误消息的定制组件. 该组件可以用于全部显示这类错误消息的表单中.
下面的活动将处理网站上的广告: 免费的电子证书. 它将尝试发送证书邮件, 但会抛出异常.
活动类:
Jsp页面:
HTML输出(提交前):
下面的模版将循环全部活动错误并显示在列表中.
模版(action-errors.vm)
HTML输出(提交之后):
在WebWork 2中, 有两类错误消息: 字段错误消息和活动错误消息. 字段错误消息代表某一控件的问题并显示在控件中. 许多标签支持显示这种消息. 另一方面活动错误消息代表活动执行的问题. 在Web应用中很多事物会导致错误, 尤其是在依赖于外部资源的应用中如数据库, 远程Web服务, 或其他在活动执行期间可能不可用的资源. 能否优雅的处理错误并向用户提供有用的消息通常是用户体验好与坏的区别.
当这种错误发生时, 把消息从表单控件中分离出来单独显示更为合适. 下例中, 我们将创建一个可以用列表现活动错误消息的定制组件. 该组件可以用于全部显示这类错误消息的表单中.
下面的活动将处理网站上的广告: 免费的电子证书. 它将尝试发送证书邮件, 但会抛出异常.
活动类:
package example; import com.opensymphony.xwork.ActionSupport; public class AddUser extends ActionSupport { private String fullname; private String email; public String execute() throws Exception { // we are ignoring field validation in this example try { MailUtil.sendCertificate(email, fullname); } catch (Exception ex) { // there was a problem sending the email // in a real application, we would also // log the exception addActionError("We are experiencing a technical problem and have contacted our support staff. " + "Please try again later."); } if (hasErrors()) { return ERROR; } else { return SUCCESS; } } public String getFullname() { return fullname; } public void setFullname(String fullname) { this.fullname = fullname; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
Jsp页面:
<%@ taglib uri="webwork" prefix="ui" %> <html> <head><title>custom component example</title></head> <!-- don't forget this --> <link rel ="stylesheet" type="text/css" href="/webwork-example/template/xhtml/styles.css" title="Style"> <body> <ui:form action="AddUser.action" method="POST"> <table> <ui:component template="action-errors.vm" /> <ui:textfield label="Full Name" name="fullname" /> <ui:textfield label="Email" name="email" /> <ui:submit name="submit" value="Send me a free E-Certificate!" /> </table> </ui:form> </body> </html>
HTML输出(提交前):
<html> <head><title>custom component example</title></head> <link rel ="stylesheet" type="text/css" href="/webwork-example/template/xhtml/styles.css" title="Style"> <body> <form action="AddUser.action" method="POST" /> <table> <tr> <td align="right" valign="top"><span class="label">Full Name:</span></td> <td> <input type="text" name="fullname" value="" /> </td> </tr> <tr> <td align="right" valign="top"><span class="label">Email:</span></td> <td> <input type="text" name="email" value="" /> </td> </tr> <tr> <td colspan="2"> <div align="right"> <input type="submit" name="submit" value="Send me a free E-Certificate!"/> </div> </td> </tr> </table> </form> </body> </html>
下面的模版将循环全部活动错误并显示在列表中.
模版(action-errors.vm)
#set ($actionErrors = $stack.findValue("actionErrors")) #if ($actionErrors) <tr> <td colspan="2"> <span class="errorMessage">The following errors occurred:</span> <ul> #foreach ($actionError in $actionErrors) <li><span class="errorMessage">$actionError</span></li> #end </ul> </td> </tr> #end
HTML输出(提交之后):
<html> <head><title>custom component example</title></head> <link rel ="stylesheet" type="text/css" href="/webwork-example/template/xhtml/styles.css" title="Style"> <body> <form action="AddUser.action" method="POST" /> <table> <tr> <td colspan="2"> <span class="errorMessage">The following errors occurred:</span> <ul> <li class="errorMessage"> We are experiencing a technical problem and have contacted our support staff. Please try again later. </li> </ul> </td> </tr> <tr> <td align="right" valign="top"><span class="label">Full Name:</span></td> <td> <input type="text" name="fullname" value="Sample User" /> </td> </tr> <tr> <td align="right" valign="top"><span class="label">Email:</span></td> <td> <input type="text" name="email" value="user@example.com" /> </td> </tr> <tr> <td colspan="2"> <div align="right"> <input type="submit" name="submit" value="Send me a free E-Certificate!"/> </div> </td> </tr> </table> </form> </body> </html>
推荐阅读
-
PHP4.04 增加了对无限精度运算的支持_PHP
-
详解DedeCMS不支持PHP5.3、5.4及以上版本后台500错误白屏的解决方法
-
mysql/Java服务端对emoji的支持与问题解决方法详解
-
深入Spring Boot实现对Fat Jar jsp的支持
-
IE6,IE7和firefox对DIV的支持区别
-
深入Spring Boot实现对Fat Jar jsp的支持
-
简单几步 实现vs2010对html5的支持
-
深入Java7的一些新特性以及对脚本语言支持API的介绍
-
BarTender条码打印的时候提示错误消息3700或3721怎么办?
-
zend studio中加入对tpl文件支持的设置方法