我有一个注册程序。在数据库上插入记录时,我将实例化一个类并调用method insert()。当我插入相同的记录时,当然会有重复的数据错误和大量错误消息。我想用try和捕获它catch。我可以的 但是,我不知道如何将消息显示给JSP。
insert()
try
catch
据我了解,在操作类中,validate()方法和方法validation.xml首先运行。那些方法被调用后,发生插入重复错误。
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>
尝试这个:
1.定义自己的异常类
public class MyException extends Exception {}
2.如果您的insert方法中有异常,请抛出此异常
insert
if(insertError){ throw new MyExecption("your message"); }
3.在动作类中,调用 insert method with try-catch block
insert method with try-catch block
try{ insert(); } catch(MyException me){ addActionError(me.getMessage()); return "anything_you_want"; }
4.您可以使用以下命令在jsp中显示消息<s:actionerror/>
<s:actionerror/>