1 我的Action代码
 package common.regist.action;
 import com.opensymphony.xwork2.ActionSupport;
 import common.regist.Interface.IRegistService;
 import domain.User;
 public class RegistAction extends ActionSupport {
  private IRegistService service;  
  private String responseText;  
  private String username = ""; 
  private User user; 
  public IRegistService getService() {
   return service;
  }
  public void setService(IRegistService service) {
   this.service = service;
  } 
  public User getUser() {
   return user;
  } 
  public void setUser(User user) {
   this.user = user;
  }  
  public String validateUserName() {
   if(service.validateUser(username).size()==0)
   {
    this.setResponseText("true");
    return ActionSupport.SUCCESS;
   }
   this.setResponseText("false");
   return ActionSupport.SUCCESS;
  }  
  public String execute() throws Exception {
   service.regist(user);
   return super.execute();
  } 
  public String getResponseText() {
   return responseText;
  } 
  public void setResponseText(String responseText) {
   this.responseText = responseText;
  } 
  public String getUsername() {
   return username;
  }
  public void setUsername(String username) {
   this.username = username;
  } 
 } 
 配置文件里:
 <package name="ajax" extends="json-default" namespace="/login">
   <action name="validateUserName" class="registAction" method="validateUserName">
    <result type="json"></result>
   </action>
   </package> 
 发生的异常
 org.apache.catalina.core.StandardWrapperValve invoke
 严重: Servlet.service() for servlet default threw exception
 java.sql.SQLException: Positioned Update not supported.
 低调的猫(624767717) 15:04:17
 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
  at com.mysql.jdbc.ResultSet.getCursorName(ResultSet.java:1917)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:597)
  at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:220)
  at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:152)
  at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:120)
  at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:302)
  at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:221)
  at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:152)
  at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:120)
  at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:302)
  at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:221)
  at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:152)
  at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:120)
  at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:302)
  at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:221)
  at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:152)
  at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:120)
  at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:302)
  at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:221)
  at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:152)
  at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:120)
  at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:302)
  at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:221)
  at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:152)
  at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:120)
  at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:302)
  at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:221)
  at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:152)
  at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:120)
  at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:302)
  at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:221)
  at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:152)
  at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:120)
  at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:302)
  at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:221)
  at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:152)
  at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:120)
  at com.googlecode.jsonplugin.JSONWriter.write(JSONWriter.java:88)
  at com.googlecode.jsonplugin.JSONUtil.serialize(JSONUtil.java:90)
  at com.googlecode.jsonplugin.JSONResult.execute(JSONResult.java:119)  
 分析---------------------------------------------------------------------------------------
 在我的Action中一共有4个properties,其中有个bean是service,而且是在spring framework中已经实例化了的,问题就出在它身上了。于是在struts-config中加入该bean的exclude,再测试,成功了!
 发送action的request后,服务返回JSON数据。 
 解决-----------------------------------------------------------------------------------------
 <action name="validateUserName" class="registAction" method="validateUserName">
    <result type="json">
      <param name="excludeProperties">      //序列化属性中排除 service
                      service
    </param> 
 </result>
   </action>
   </package>