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

オブジェクトの内容を更新した後、オブジェクトをセッションに保存してください。

于 2013-01-09T19:36:47.990 に答える
0

appengine-web.xml に次の行を追加します。

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

よくわかりませんが、これは私にとって繰り返しの間違いでした。:P

さらに、セッションに永続化するすべてのオブジェクトが java.io.Serializable インターフェイスを実装していることを確認する必要があります。オブジェクトをシリアライズ可能にする必要があるのは、App Engine がセッション データをデータストアと memcache に保存するためです。セッションに入力した値によって参照されるすべてのオブジェクトはシリアライズ可能である必要があるため、オブジェクト グラフ全体を使用できます。私が興味深いと思ったのは、セッションに String も保存していて、それも永続化されていなかったため、トランザクションベースの方法でセッションデータをコミットする必要があることです。オブジェクトがシリアライズ可能でない場合、アプリはローカル開発マシンでは失敗しませんが、クラウドにデプロイされると失敗します。

ソース: http://afewguyscoding.com/2011/02/httpsession-google-app-engine/

于 2013-01-09T16:56:59.277 に答える