菜单

idea后台接口开发咋样接收app端传过来的参数

2018年12月13日 - Ajax

问题讲述:

IDEA部分:
dao层LayerMapper

于前端js里面写了一个ajax,前端alertx出来的凡1要么1,2格式的数量,但是于后台取到之值一向依旧null。

public interface LayerMapper {

    List<LayerInfo> selectLayerList();

    List<PointModel> selectLayerPointList(double latitude0,
                                          double longitude0,
                                          double latitude1,
                                          double longitude1);

//    List<PointModel> selectLayerPointList();
//    List<PointModel> selectLayerPointList(String tableName);
//    List<PointModel> selectLayerPointList(@Param("tableName")String tableName);
//    List<PointModel> selectLayerPointList(Map<String, String> map1);

    List<LinkedHashMap<String, Object>> superManagerSelect(String sql);
}

js代码如下:

像第六只点子superManagerSelect,如何接受sql参数为?
接口实现LayerListMapper.xml:

function confirmCourseSystem(){
   var findAllTrainProgramNameId = $("#findAllTrainProgramNameId").val();
   if(findAllTrainProgramNameId==null || findAllTrainProgramNameId==""){
    window.alertx("请选择培训方案!");
    return false;
   }
   var courseSystemId = $('#CourseSystemList').val();
   alertx(courseSystemId);
   $.ajax({
    type: "POST",
    url: "${ctx}/teach/teachDistribute/getCourseSystemNameById",
    data: {
     "CourseSystemId": $('#CourseSystemList').val()
    },
    success:function(CourseSystemListName){
     $('#CourseSystemBody').html("");
     for(var i=0; i<CourseSystemListName.length; i++){
      $("#CourseSystemBody").append("<tr><td>"+CourseSystemListName[i] +"</td><td>课程体系</td><td>无</td></tr>");
     }
    },
    error:function(){
     alertx("error");
    }
   });
  }
    <select id="superManagerSelect" parameterType="String" resultType="java.util.LinkedHashMap">
        ${value}
    </select>

后台代码如下:

控制类LayerController:这里的superManagerSelect(@RequestParam String
table)
实则该就是是当value =
“/superManagerSelect”
地点后举办拼接,组成……../superManagerSelect?table=layer_1如此的网址。RequestParam字面意思不就是是“
request from向…请求[要求] ”吗

//添加下发-确认选择,根据CourseSystemId获得CourseSystemName
 @ResponseBody
 @RequestMapping(value = "getCourseSystemNameById")
 public List<String> getCourseSystemNameById(@RequestParam(required = false) String CourseSystemId, HttpServletRequest request){
  logger.debug("==Evan==CourseSystemId: "+ CourseSystemId);
  logger.debug("==Evan==CourseSystemId2 :"+request.getParameter("CourseSystemId"));
  List<String> CourseSystemListName = new ArrayList<>();
  if(CourseSystemId==null || CourseSystemId.equals("")){
   CourseSystemListName = null;
  }else {
   String[] CourseSystemListId = CourseSystemId.split(",");
   for (String aCourseSystemListId : CourseSystemListId) {
    CourseSystemListName.add(resourceCoursesystemService.get(aCourseSystemListId).getCoursesystemName());
   }
  }
  return CourseSystemListName;
 }
    /**
     * 传入整条sql语句查询
     */
    @RequestMapping(value = "/superManagerSelect", method = RequestMethod.GET)
        public ResponseObj<List<LinkedHashMap<String, Object>>> superManagerSelect(@RequestParam String table) {
        String sql = "SELECT * FROM" + " "+table;
//        String sql = "SELECT * FROM layer_1 WHERE LATITUDE > #{2} AND #{0} > LATITUDE AND LONGITUDE > #{1} AND #{3}
// > LONGITUDE";

        try {
            List<LinkedHashMap<String, Object>> linkedHashMaps = layerMapper.superManagerSelect(sql);
            return new ResponseObj<>(linkedHashMaps, null);
        } catch (Exception e) {
            e.printStackTrace();
            return new ResponseObj<>(null, new Error("服务器请求异常"));
        }
    }

题目原因:于使浏览器查看后发现数目格式是这般的,原因应是前台传入值的品类不对:

android studio部分:
PointApi:
此例中应用getManagerSelect方法,假设未适用@Query举行拼接,网址是:http://127.0.0.1:10002/layer/superManagerSelect
。使用@Query举办拼接,在浏览器上看的网址就是:http://127.0.0.1:10002/layer/superManagerSelect?table=layer\_1

图片 1

public interface PointApi {
    @GET("user1/getLayerConfig")
    Observable<ResponseObj<Map<String, LayerConfig1>>> getLayerConfig();

    @GET("layer/selectLayerList")
    Observable<ResponseObj<List<LayerConfig>>> getLayerInfo();

    /**
     * 查询在屏幕内的数据
     *
     * @return
     */
    @GET("layer/selectLayerPointList")
    Observable<ResponseObj<Map<String, List<Map<String, Object>>>>> getLayerPointList(
            @Query("latitude0") double latitude0, @Query("longitude0") double longitude0,
            @Query("latitude1") double latitude1, @Query("longitude1") double longitude1);

    /**
     * 查询所有数据
     */
//    @GET("layer/selectLayerPointList")
//    Observable<ResponseObj<Map<String,List<Map<String, Object>>>>> getLayerPointList();

//    @GET("layer/selectLayerPointList")
//    Observable<ResponseObj<Map<String,List<Map<String, Object>>>>> getLayerPointList();

    @GET("layer/superManagerSelect")
    Observable<ResponseObj<List<LinkedHashMap<String, Object>>>> getManagerSelect(@Query("table")String table);

}

解决办法:

心想事成:这里调用接口方法getManagerSelect(table)将table参数传进,对应接口类PointApi中getManagerSelect方法,然后自行按照@GET(“layer/superManagerSelect”)的地点去相应后台相同的地址,并拿参数table带过来给后台使用,后台接受及table参数举行询问…….

改前端传入值的种,用toString方法即可。代码如下

    public void getPoints(String table) {
        subScribe = ApiManager.getInstance()
                .pointApiService()
                .getManagerSelect(table)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(listResponseObj -> {
                    List<LinkedHashMap<String, Object>> data = listResponseObj.data;
                    Log.e("LayerConfig", "通过查询sql语句查询点获取成功:" + data.get(0).toString());

                }, throwable -> {
                    Log.e("LayerConfig", "通过查询sql语句查询点未获取成功");
                });
    }
 $.ajax({
    type: "POST",
    url: "${ctx}/teach/teachDistribute/getCourseSystemNameById",
    data: {
     "CourseSystemId": $('#CourseSystemList').val().toString()
    },
    success:function(CourseSystemListName){
     $('#CourseSystemBody').html("");
     for(var i=0; i<CourseSystemListName.length; i++){
      $("#CourseSystemBody").append("<tr><td>"+CourseSystemListName[i] +"</td><td>课程体系</td><td>无</td></tr>");
     }
    },
    error:function(){
     alertx("error");
    }
   });

以上这篇解决ajax传过来的值后台接收不交之问题就是是微编分享给大家的全体内容了,希望能为我们一个参照,也期待我们多协助脚本的小。

乃可能感兴趣之章:

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图