iteye_10073 2011-11-18 15:04
浏览 229
已采纳

Struts2 的问题 异步请求访问Action方法出现bug

Struts2 的问题 异步请求访问Action方法出现bug
[code="java"]
public class EnumConstAction extends BaseAction {
EnumConstService enumConstService;
WEnumConstTab selInfo;// 专门为初始化select 使用

public WEnumConstTab getInfo() {
    return info;
}

public void setInfo(WEnumConstTab info) {
    this.info = info;
}

public EnumConstService getEnumConstService() {
    return enumConstService;
}

public void setEnumConstService(EnumConstService enumConstService) {
    this.enumConstService = enumConstService;
}

/**
 * 根据父级id和命名空间
 * @return
 */
public String findByFatherIdAndNamespace(){
    List<WEnumConstTab> list = null;
    if (selInfo.getId() != null && 
                !"".equals(selInfo.getId())&&
                selInfo.getNamespace()!=null
                &&!"".equals(selInfo.getNamespace())) {
        list = enumConstService.findByFatherIdAndNamespace(selInfo.getId(),selInfo.getNamespace());
    } else {
        list = new ArrayList<WEnumConstTab>();
    }
    selInfo = null;
    this.getRequest().setAttribute(JSONSTRING, JSONArray.fromObject(list).toString());
    return JSON;
}
/**
 * 根据命名空间查找
 * @return
 */
public String findByNamespace(){
    List<WEnumConstTab> list = null;
    if (selInfo.getNamespace() != null &&
                 !"".equals(selInfo.getNamespace())) {
        list = enumConstService.findByNamespace(selInfo.getNamespace());
    } else {
        list = new ArrayList<WEnumConstTab>();
    }
    selInfo = null;
    this.getRequest().setAttribute(JSONSTRING, JSONArray.fromObject(list).toString());
    return JSON;
}
//--------------------------------------------------------------------

}

[/code]

当使用Ajax 同时调用 Action 里的 findByNamespace 方法和 findByFatherIdAndNamespace 方法时

方法里的 selInfo 会变成 Ajax 里最后赋值的对象,

[code="java"]
jQuery.post("dnumConstAction_findByNamespace.action",{"selInfo.namespace":"AA"},function(data){});
jQuery.post("dnumConstAction_findByFatherIdAndNamespace.action",
{"selInfo.namespace":"BB","selInfo.id":"11"}},function(data){});
[/code]
结果就会都返回 namespace="BB"的结果
如何解决呢

  • 写回答

2条回答 默认 最新

  • jiangguangxian 2011-11-18 15:27
    关注

    并发性问题,
    [code="java"]
    public synchronized void setInfo(WEnumConstTab info) {

    this.info = info;

    }

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题