使用struts2和json时,jsp页面的json返回数据为空

发布于 2021-12-01 00:26:58 字数 3484 浏览 753 评论 6

最近在做一个购物车的小功能,找了一个项目进行改造。发现我的项目在获取strus返回的json对象时,取不到值,找了一整天都想不出个所以然。

我的项目json返回显示如下:

网上找的项目返回显示如下(正确显示):

这是jsp页面的jquery代码:

<script type="text/javascript">
			$(function(){
				$(".buy").click(function(){
					var t = this;
					var id = $(this).prev().val();
					$.post(
						"${pageContext.request.contextPath }/cart/cartAction!doBuy",
						{"cid":id},
						function(date){
							if (date.ok) {
								$(t).html("<img src='${pageContext.request.contextPath }/myimages/right.gif'/>"+
								"成功添加到购物车!");
							} else {
								$(t).html("您已经购买过该商品");
							}
							return;
						}
					);
				});
			});
		</script>



点击按钮:
<td class="altbg2">
    <input type="hidden" value=${dishesId } id="cid"/>
    <a href="javascript:;" class="buy">购买</a>
    <span id="cartinfo"></span>
</td>


action代码:


	/**
	 * 购买商品
	 * @return
	 */
	public String doBuy(){
		try {
			//获取session中的购物车
			cartService = (CartService) sessionMap.get(ConfigUtil.CART_KEY);
			if (cartService == null) {
				cartService = new CartServiceImpl();
				sessionMap.put(ConfigUtil.CART_KEY, cartService);
			}
			ok = cartService.add(cid);
		} catch (Exception e) {
			e.printStackTrace();
			LogInfoUtil.logError("doBuy", e);
			return "error";
		}
		return "buy_success";
	}


	/**
	 * 获取购物车清单
	 * @return
	 */
	public String cartList(){
		try {
			cart = (ICartService) sessionMap.get(Constant.CART_KEY);
			
			if (cart==null) {
				cart = new CartServiceImpl();
				sessionMap.put(Constant.CART_KEY, cart);
			}
			buyList = cart.getBuyList();//购买列表
			deleteList = cart.getDeleteList();//删除列表
			if (buyList.size()==0&&deleteList.size()==0) {
				cart.load(CookieUtil.findCookie(Constant.CART_KEY, request));
			}
			CookieUtil.addCookie(Constant.CART_KEY, cart.store(), response);
			String[] cost = cart.cost().split("-");
			saveCost = Double.parseDouble(cost[0]);
			totalCost = Double.parseDouble(cost[1]);
		} catch (Exception e) {
			e.printStackTrace();
			return "error";
		}
		
		return "cart_list";
	}




struts.xml相关配置:


	<!-- 购物车 -->
	<package name="cart" extends="json-default" namespace="/cart">
		<action name="cartAction" class="com.lwj.sys.action.CartAction">
			<result name="cart_list">
				/customer/cart_list.jsp
			</result>
			
			<result name="buy_success" type="json">
			</result>



第一次点击“购买”时,buyList为null,但再次点击时,因为已经购买过了,应该会正常显示,又返回数据。但第二次点击时,也是为null。

action中没问题,相关的字段都是有值的,就是json这里返回的对象为空。

没有报错。。

实在是想不到了,才来问问大家有没有什么意见,不知道是不是漏了些什么,没学过json,都是弄这个小功能的时候看了一下struts整合json的。可能会有些知识漏掉



如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

臻嫒无言 2021-12-01 21:38:28

自顶,求解答,要疯了

甜柠檬 2021-12-01 21:38:25

也不行啊。。

吃颗糖壮壮胆 2021-12-01 21:38:24

 $.post('url',

{id :id},

function() {

},'json');返回类型没有加,识别不到是json数据

凡尘雨 2021-12-01 21:38:20

get 都有的

羁拥 2021-12-01 21:25:55

使用struts的json的话,你需要给set、get方法,因为json的话是通过get方法获取的,或者你使用第三方的json包

甜扑 2021-12-01 12:50:11

用org.json或json-lib构造一下试试。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文