在jax rs中共享全局变量更改是不可能的吗?
Is it not possible to share global variable changes in jax rs?
在 JAX-RS 中执行购物车时遇到小问题。
我正在尝试将 JSON 对象添加到存储在 JAX-RS class 本身中的数组中。
在对 post 执行 shop/updateBasket
之后(我在其中向数组添加了一个新元素)之后,无法通过对 /shop/getBasket
的请求再次获取更新后的数组。
我在 posting 之后得到的数组,做 get /shop/getBasket
似乎在我更新后没有改变。
怎么了?
@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();
}
}
仅在 ajax 中调用 /shop/getBasket
return 在 getBasket()
中添加的项目。
单独的请求正在获取 shopServer
的单独实例(顺便重命名为 ShopServer
)。所以 POST addToBasket
得到一个实例, GET getBasket
得到另一个实例。这意味着每个请求都有一个新的空 JSONArray basket
实例。
您可以通过多种方式存储状态。这取决于您的需要。您可以使用数据库(尝试在内存中进行开发)、静态变量、单例。
另见
- How does an JAX-RS 'endpoint' behave when making a request?
在 JAX-RS 中执行购物车时遇到小问题。
我正在尝试将 JSON 对象添加到存储在 JAX-RS class 本身中的数组中。
在对 post 执行 shop/updateBasket
之后(我在其中向数组添加了一个新元素)之后,无法通过对 /shop/getBasket
的请求再次获取更新后的数组。
我在 posting 之后得到的数组,做 get /shop/getBasket
似乎在我更新后没有改变。
怎么了?
@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();
}
}
仅在 ajax 中调用 /shop/getBasket
return 在 getBasket()
中添加的项目。
单独的请求正在获取 shopServer
的单独实例(顺便重命名为 ShopServer
)。所以 POST addToBasket
得到一个实例, GET getBasket
得到另一个实例。这意味着每个请求都有一个新的空 JSONArray basket
实例。
您可以通过多种方式存储状态。这取决于您的需要。您可以使用数据库(尝试在内存中进行开发)、静态变量、单例。
另见
- How does an JAX-RS 'endpoint' behave when making a request?