0

我有这个代码:

private String delete(HttpServletRequest req, HttpServletResponse res, Seller seller) throws Exception {

    //check data
    if(req.getParameter("equipmentId") == null) {

    throw new Exception("equipmentId undefined");

}

//build
Equipment equipment = new Equipment(Integer.parseInt(req.getParameter("equipmentId")));

//delete
dbEquipment.delete(equipment);

//remove in array list
for(int i = 0; i < seller.getListEquipment().size(); i++) {

    if(seller.getListEquipment().get(i).getId() == equipment.getId()) {

        seller.getListEquipment().remove(i);

    }

}

//response
return "ok";

}

传递的卖家属性来自 HTTPSession : ((Seller) req.getSession().getAttribute("user"))

此代码离线更新我的对象卖家很好,但在线更新不显示,它仍然是旧对象/ArrayList。

4

2 回答 2

1

Try saving object back into session after you update it's contents.

于 2013-01-09T19:36:47.990 回答
0

在你的 appengine-web.xml 添加这一行:

<sessions-enabled>true</sessions-enabled>

我不确定,但这对我来说是一个反复的错误。:P

此外,您需要确保要持久保存到会话的所有对象都实现了 java.io.Serializable 接口。对象需要可序列化的原因是 App Engine 将会话数据存储在数据存储区和内存缓存中。您放入会话中的值引用的任何对象都必须是可序列化的,因此整个对象图都是可用的。我发现有趣的是它必须以基于事务的方式提交会话数据,因为我还在会话中存储了一个字符串,并且它也没有持久化。如果对象不可序列化,则应用程序在本地开发机器中不会失败,但在部署到云时会失败。

来源:http ://afewguyscoding.com/2011/02/httpsession-google-app-engine/

于 2013-01-09T16:56:59.277 回答