后台接收不到前台传入的值

后台接收不到前台传入的值

注册页面过程中前台输入相应信息后点击提交按钮可以跳转到相应后台,但是后台接收不到前台传过来的值,想问下老师我到底是哪里的错误,下面是表单提交事件的代码:

var shopId = getQueryString("shopId");
var flag = shopId ? true : false;
var initUrl='/shopadmin/getshopinitinfo';
var registUrl='/shopadmin/registershop';
var modifyUrl = '/shopadmin/modifyshop';

// 表单提交事件
$('#submit').click(function () {
   var code = $('#j_captcha').val();
   if (!code) {
       $.toast("请输入验证码");
       return;
   }
   var shop={};
   if (flag) {
       shop.shopId = shopId;
   }
   //获取表单文本项数据
   shop.shopName = $('#shop-name').val();
   shop.shopDesc = $('#shop-desc').val();
   shop.phone = $('#shop-phone').val();
   shop.shopAddr = $('#shop-addr').val();
   //获取下拉列表数据
   shop.shopCategory = {
       shopCategoryId: $('#shop-category').find('option').not(function () {
           return !this.selected;
       }).data('id')
   };
   console.log(shop.shopCategory.shopCategoryId);
   shop.area = {
       areaId: $('#area').find('option').not(function () {
           return !this.selected;
       }).data('id')
   };
   console.log(shop.area.areaId);
   // 获取上传的图片文件流
   var shopImg = $('#shop-image')[0].files[0];
   // 生成表单对象,用于接收参数并传递给后台
   var formData = new FormData();
   // 添加图片流进表单对象里
   formData.append('shopImg', shopImg);
   // 将shop json对象转成字符流保存至表单对象key为shopStr的的键值对里
   formData.append('shopStr', JSON.stringify(shop));
   //存放验证码
   formData.append('verifyCodeActual', code);
   console.log(formData.get("shopStr"));
   向后端传送数据,并获取后台传来的数据
   $.ajax({
       url: (flag ? modifyUrl : registUrl),
       type:'POST',
       data:formData,
       contentType:false,
       processData:false,
       cache:false,
       success:function (data) {
           if (data.success) {
               $.toast("表单提交成功!");
               //无论注册或修改,提交成功后都返回店铺列表页面
               window.location.href = '/shopadmin/shoplist';
           } else {
               $.toast("表单提交失败!" + data.errMsg);
           }
       }
   });
});

下面是对应后台程序的一点代码:

@RequestMapping(value = "/registershop", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> registerShop(HttpServletRequest request) {
   Map<String, Object> map = new HashMap<>();
   String shopStr = HttpRequestServletUtil.getString(request, "shopStr");
   System.out.println("商铺信息:"+shopStr);

前台输入信息后,界面的控制台可以输出相关的信息,但是后台输出的相关信息一直显示为null,文件上传的依赖也已经引入进来了

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕柯南 2019-07-04 15:23:08

同学你好!

1.同学的文件上传解析器没有添加id属性呢

http://img1.sycdn.imooc.com//climg/5d1da8fc0001900b09600237.jpg

2.同学注意以后贴代码可以以回答这个问题的方式来贴出,回复里会改变代码的格式

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 提问者 慕仔8391947 #1
    好的,谢谢老师,还有一个问题,配置文件里面的id不是在配置文件其他的bean里面用到的时候才必须要加的吗?
    2019-07-04 15:35:46
  • 好帮手慕柯南 回复 提问者 慕仔8391947 #2
    同学你好!只要写了bean一定要加id呢,即使我们自己写的配置文件或者代码中没有用,但是源码中可能会用到呢,比如文件上传解析这里肯定是源码中用到了呢。祝学习愉快~
    2019-07-04 16:13:03
  • 提问者 慕仔8391947 #3
    问题解决了,的确是id的问题,谢谢老师
    2019-07-04 20:41:18
好帮手慕柯南 2019-07-04 10:52:35

同学你好!同学的js在老师这里是可以使用的,建议同学在教辅区下载老师的源码对比一下自己的工具类中的getString方法是否有误。

http://img1.sycdn.imooc.com//climg/5d1d69a40001992406820069.jpg

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 提问者 慕仔8391947 #1
    又重新把老师的getString方法复制过来重新运行了一下,发现还是没办法获取到前台数据,另外Spring-web.xml文件中也已经配置好了相关的bean,如下: <!--文件上传解析器--> <bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="utf-8"/> <!-- 1024 * 1024 * 20 = 20M --> <property name="maxUploadSize" value="20971520"/> <property name="maxInMemorySize" value="20971520"/> </bean> //getString public static String getString(HttpServletRequest request, String key) { try { String result = request.getParameter(key); if (result != null) { result = result.trim(); } if ("".equals(result)) { result = null; } return result; } catch (Exception e) { return null; } }
    2019-07-04 11:02:48
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师