Ajax+Struts2实现字段验证

一、加入与Ajax的相关jar包

       commons-beanutils-1.7.0.jar   

       commons-collections-3.2.jar   

       commons-lang-2.3.jar   

       commons-logging-1.1.jar   

       ezmorph-1.0.4.jar   

       json-lib-2.2.3-jdk15.jar 

       jsonplugin-0.33.jar

      另外struts2-json-plugin-2.2.1.1.jar  和  jsonplugin-0.33.jar会冲突不能同时存在

二、Struts2的 strut.xml文件
 

    
    	
    		 
    	
    

注意:extends 必须继承 json-default 否则会出以下这个错

Caused by: There is no result type defined for type 'json' mapped with name 'success'.

 

三、AjaxCheck类

package com.trainsystem.action;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;
import com.trainsystem.model.Trains;
import com.trainsystem.service.TrainsService;

public class AjaxCheck extends ActionSupport {
	private HttpServletRequest request;
	private HttpServletResponse response;
	
	private String trainId;
	public HttpServletRequest getRequest() {
		return request;
	}
	public void setRequest(HttpServletRequest request) {
		this.request = request;
	}
	public HttpServletResponse getResponse() {
		return response;
	}
	public void setResponse(HttpServletResponse response) {
		this.response = response;
	}
	public String getTrainId() {
		return trainId;
	}
	public void setTrainId(String trainId) {
		this.trainId = trainId;
	}
	
	@Override
	public String execute() throws Exception {
		response = ServletActionContext.getResponse();
		response.setContentType("text/html;charset=utf-8");
		PrintWriter w = response.getWriter();
		if(trainId.equals("123")) {
			w.print("可以使用");
		}else {
			 w.print("不可以使用");
		}
		w.close();  
		return null;//不能return "success";
	}
}

 

注意:在execute 方法里面的返回值只能为 null ,若return "success" 将出错。因为 http server 发送response后就关闭了socket,这个时候再次发送response给http client就会出现问题。如果出现以下的错误就是因为这里引起的:

java.lang.IllegalStateException: Cannot call sendError() after the response has been committed

四、jsp页面
 

   

 

你可能感兴趣的:(Struts2)