※修改驗證
ActionSupport其實早就有validate()了,可以利用它來做驗證,會比較漂亮 struts.propertieslogin.success=login success login.fail=login fail
LoginAction
private User user = new User(); public User getUser() { return user; } @Override public String execute() throws Exception { return SUCCESS; } @Override public void validate() { if (user.getUserName().trim().isEmpty()) { super.addFieldError("s", super.getText("login.success")); } if (user.getUserPassword().trim().isEmpty()) { super.addFieldError("f", super.getText("login.fail")); } }
struts.xml
<action name="login" class="login.LoginAction" method="execute"> <result name="success">/struts2/login.jsp</result> <result name="input">/struts2/login.jsp</result> </action>
login.jsp
${fieldErrors} <s:property value="displayMessage" /> <form action="login.action"> <input type="text" name="user.userName" />${FieldErrors["s"][0]}<br /> <input type="password" name="user.userPassword" />${FieldErrors["f"][0]}<br /> <input type="reset" /> <input type="submit" /> </form>
User.java
private String userName; private String userPassword; //setter/getter...在jsp的${fieldErrors},主要是印出來,才知道是陣列,也才會知道要用${FieldErrors["s"][0]}
※內置對象
Servlet有四個內置對象:request、response、session、application,可在execute()加程式碼,驗證成功就會印出
HttpServletRequest request = ServletActionContext.getRequest() ; HttpServletResponse response = ServletActionContext.getResponse() ; HttpSession session = request.getSession() ; ServletContext context = ServletActionContext.getServletContext() ; System.out.println("虛擬路徑=" + request.getContextPath()); System.out.println("編碼=" + response.getCharacterEncoding()); System.out.println("Session ID=" + session.getId()); System.out.println("真實路徑=" + context.getRealPath("/"));
沒有留言:
張貼留言