我有一个注册程序。当我在数据库中插入一条记录时,我将实例化一个类并调用方法
insert()
。当我插入相同的记录时,当然会出现重复数据错误和大量错误消息。我想用try-catch
捕捉它们。我能做到。但是,我不知道如何将错误消息显示到 JSP。
据我所知,在动作类中,有
validate()
方法,并且 validation.xml
首先运行。调用这些方法后发生插入重复错误。
import com.opensymphony.xwork2.ActionSupport;
import lotmovement.business.crud.InsertUserProfile;
import lotmovement.business.entity.UserProfile;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class RegisterAction extends ActionSupport {
private static String userId;
private static String password;
private static String firstName;
private static String lastName;
private static int securityLevel;
@Override
public String execute() {
ApplicationContext context =
new ClassPathXmlApplicationContext("spring.xml");
InsertUserProfile iup =
(InsertUserProfile)context.getBean("insertuserprofile");
iup.Insert();
return SUCCESS;
}
这是我插入用户个人资料的方法
public void Insert() {
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
UserProfile up = (UserProfile)context.getBean("userprofile");
RegisterAction ra = (RegisterAction)context.getBean("registeraction");
EntityStart es = (EntityStart)context.getBean("entitystart");
es.StartDbaseConnection();
up.setUserId(ra.getUserId());
up.setFirstName(ra.getFirstName());
up.setLastName(ra.getLastName());
up.setPassword(ra.getPassword());
up.setSecurityLevel(ra.getSecurityLevel());
es.StartPopulateTransaction(up);
es.CloseDbaseConnection();
}
这是我的JSP:
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="CSS/register.css">
<title>Register</title>
<s:head />
</head>
<body>
<s:form method="POST" action="register" >
</tr>
<tr>
<td colspan="2">
<s:actionerror/>
<s:fielderror/>
</td>
</tr>
<s:textfield label="UserID" key="userId" maxLength="20"/>
<s:password label="Password" key="password" maxLength="20"/>
<s:password label="retype-Password" key="retypepassword" maxLength="20"/>
<s:textfield label="Firstname" key="firstName" maxLength="20"/>
<s:textfield label="Lastname" key="lastName" maxLength="20"/>
<s:textfield label="SecurityLevel" key="securityLevel" maxLength="20"/>
<s:submit value="Register"/>
</s:form>
</body>
</html>
addActionError
有addFieldError
和ActionSupport
方法。您可以捕获 validate
方法内的任何错误。如果提交了错误的数据,则调用这些方法。应用后,请求将分派到 input
结果。在 JSP 中您可以使用
<s:actionerror
和 <s:fielderror
显示您通过上述方法添加的错误。
试试这个:
1.定义自己的异常类
public class MyException extends Exception {}
2.如果你的
insert
方法中有异常,则抛出此异常
if(insertError){
throw new MyExecption("your message");
}
3.在操作类中,调用
insert method with try-catch block
try{
insert();
} catch(MyException me){
addActionError(me.getMessage());
return "anything_you_want";
}
4.您可以使用
<s:actionerror/>
在jsp中显示消息