在JAX-RS中购买购物车时出现小问题。
我试图将JSON对象添加到存储在JAX-RS类本身中的数组中。
在向@ViewDocking(...)
public class DetailsPane extends SomeNode implements ActiveContextSensitive, LocalContextProvider {
private final SimpleContextContent contextContent = new SimpleContextContent();
private final SimpleContext context = new SimpleContext(contextContent);
private Context activeContext;
private MyPojo myPojo;
...
@Override
public Context getLocalContext() {
return context;
}
@Override
public void setActiveContext(Context activeContext) {
this.activeContext = activeContext;
this.activeContext.addContextListener(MyPojo.class, (ContextEvent event) -> contextChanged());
contextChanged();
}
private void contextChanged() {
MyPojo newMyPojo = activeContext.find(MyPojo.class);
if ((myPojo == null && newMyPojo != null) || (myPojo null && !sample.equals(newMyPojo))) {
if (myPojo != null) {
unregister();
}
myPojo = newMyPojo;
if (myPojo != null) {
register();
}
}
}
private void unregister() {
contextContent.remove(myPojo);
//reset DetailsView
}
private void register() {
// configure DetailsView
contextContent.add(myPojo);
}
...
}
发送帖子后向/shop/getBasket
发送请求时,无法再次获取更新的数组(我在其中向数组添加了新元素)。
我发布后获得的数组,在我更新后,获取shop/updateBasket
似乎没有改变。
出了什么问题?
/shop/getBasket
在ajax中调用@Path("shop")
public class shopServer(){
JSONArray basket = new JSONArray;
@POST
@Path("addToBasket/{itemID}")
public String updateBasket(@PathParam("itemID") String itemID){
basket.put(new JSONObject().put("obj",itemID));
return null;
}
@GET
@Path("getBasket")
public String getBasket(){
basket.put(new JSONObject().put("obj","asd"));
return basket.toString();
}
}
仅返回/shop/getBasket
内添加的项目。
答案 0 :(得分:3)
单独的请求正在获得shopServer
的单独实例(顺便说一下,重命名为ShopServer
)。因此POST addToBasket
获取一个实例,而GET getBasket
获得另一个实例。这意味着每个请求都有一个新的JSONArray basket
空实例。
您可以通过多种方式存储州。这取决于您的需求。您可以使用数据库(尝试在内存中进行开发),静态变量,单例。