现在的位置: 首页 > 综合 > 正文

Struts2 学习笔记 08 简单的数据验证

2019年08月31日 ⁄ 综合 ⁄ 共 1896字 ⁄ 字号 评论关闭

  今天讲解下简单的数据验证。之前已经说明了如何从传递参数到后台,然后我们要讲解一下,传递的参数到后台去,看看是否非法,然后从后台返回相应的响应到前台来。

  在主页index.jsp访问http://localhost:8080/Struts2_1100_SimpleDataVilation/user!add?name=a 传递name的值为a 。

UserAction.java

package com.tfj.struts2.action;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport{
	private String name;
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	
	
	public String add(){
		if(name==null||!name.equals("admin")){
			addFieldError("name", "name is too illegal");
			return ERROR;
		}
		System.out.println("name="+name);
		return SUCCESS;
		
		
		
	}
	
}

在add()方法里判断name是否等于admin,调用addFieldError("name","name is illegal")方法,返回Error页面,addFieldError()是用来关联到返回的页面,前者是属性,后者是返回的内容。提交后会返回Error会调用user_add_error.jsp.

user_add_error.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib uri="/struts-tags" prefix="s" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'user_add_error.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    user add error. <br>
     <s:fielderror fieldName="name" theme="simple"/>
    <br>
    <s:property value="errors.name[0]"/>
    <s:debug>
    </s:debug>
    
  </body>
</html>

运行结果如图所示


<%@ taglib uri="/struts-tags" prefix="s" %>需要引用taglib标签这是struts的标签,prefix="s"代表前缀是s,

 <s:fielderror fieldName="name" theme="simple"/>输出错误信息,但是这种输出是有文字格式的,theme定义了格式,这种情况有时候就和网站的整体风格或者美工不相符了,那么我们要怎么单独拿出字符串呢?

<s:debug>是我们很常用的的一种方法,点开debug得到

可以用来查看值栈和内容栈,<s:property value="errors.name[0]"/>就可以调用property 里的error里的name的第一个值了。

抱歉!评论已关闭.