我有这段代码:
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:((卖方)req.getSession()。getAttribute(“user”))
此代码更新我的对象卖家罚款离线但在线更新没有显示,它仍然是旧对象/ ArrayList。
答案 0 :(得分:1)
在更新内容后尝试将对象保存回会话。
答案 1 :(得分:0)
在你的appengine-web.xml中添加以下行:
<sessions-enabled>true</sessions-enabled>
我不确定,但这对我来说一直是个错误。 :P
此外,您需要确保要保留到会话的所有对象都实现java.io.Serializable接口。对象需要可序列化的原因是App Engine将会话数据存储在数据存储区和内存缓存中。您放入会话中的值所引用的任何对象都必须是可序列化的,因此整个对象图都可用。我发现有趣的是它必须以基于事务的方式提交会话数据,因为我还在会话中存储了一个字符串,但也没有保留。如果对象不可序列化,则应用程序不会在本地开发计算机中失败,但在部署到云时会失败。
来源:http://afewguyscoding.com/2011/02/httpsession-google-app-engine/