在前面几个项目中讲过,怎么去接受一个参数,在我们真正写Java Web程序的时候,我们接受到这个参数之后,一定要检查这个参数符不符合我们的要求,如果不符合我们的要求,我们要反馈回去,要客户重新填写。
1.action类
package com.bjsxt.struts2.user.action;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
private String name;
//add方法判断用户输入的姓名
public String add() {
/*登陆不成功的时候,我们该如何向前台传递信息呢?
这与JSP不同,不能使用request,response往前台传数据,在Struts2里面把成员变量的属性成为field,在struts2里面可以使用addFieldError添加对前台的输出信息
*/
if(name == null || !name.equals("admin")) {
this.addFieldError("name", "name is error");
this.addFieldError("name", "name is too long");
return ERROR;
}
return SUCCESS;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2.在JSP页面中该如何获取这些信息呢?
在JSP页面中,我们可以使用Struts2的标签<s:fielderror />来获取提示信息。
注意:一定要在JSP页面引入Struts2的标签:<%@taglib uri="/struts-tags" prefix="s" %>
<?xml version="1.0" encoding="GB18030" ?>
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
<title>Insert title here</title>
</head>
<body>
User Add Error!
这种方法拿出来的“提示”前面会有小圆点,解决方案:直接从Value Stack中取值,这样“提示”前面就没有小圆点了。
<s:fielderror fieldName="name" theme="simple"/>
<br />
如下,就是直接从Value Stack中获取提示信息。
<s:property value="errors.name[0]"/>
<s:debug></s:debug>
</body>
</html>