全球主机交流论坛

标题: 有JAVA大佬吗?能否帮忙看个代码 [打印本页]

作者: cclylycc    时间: 2022-1-8 18:44
标题: 有JAVA大佬吗?能否帮忙看个代码
本帖最后由 cclylycc 于 2022-1-8 19:10 编辑

Controller





他这个值location 是前端传到后台的,Controller层有了,但是model addtribute的时候就莫名其妙穿不过去了,model size=0了。。求解
作者: Mr.Qin    时间: 2022-1-8 18:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: homehe    时间: 2022-1-8 18:57
封装为一个json对像传回去.
作者: cclylycc    时间: 2022-1-8 18:58
Mr.Qin 发表于 2022-1-8 18:55
你那断点就不能放到return那行?

有值,但是返回不了前端。。。
作者: cclylycc    时间: 2022-1-8 19:01
homehe 发表于 2022-1-8 18:57
封装为一个json对像传回去.

除了这种,我的方式是不行的吗
作者: Mr.Qin    时间: 2022-1-8 19:01
提示: 作者被禁止或删除 内容自动屏蔽
作者: dragonfsky    时间: 2022-1-8 19:05
你们前端用的啥? jsp?你这不是ajax调用的吗
作者: cclylycc    时间: 2022-1-8 19:05
Mr.Qin 发表于 2022-1-8 19:01
那你不贴你的index模版相关代码出来也不知道你是咋取的值啊, freemarker?JSP? ...



这个出得来数据


这个出不来数据


作者: 华为任正非    时间: 2022-1-8 19:07
外行不懂,但是你那sql语句:city = #{location} 不加双引号真的没问题吗?
作者: cclylycc    时间: 2022-1-8 19:08
华为任正非 发表于 2022-1-8 19:07
外行不懂,但是你那sql语句:city = #{location} 不加双引号真的没问题吗?

加引号会报错,
java.sql.SQLException: Parameter index out of range (2 > number of parameters, which is 1).
作者: 7836246    时间: 2022-1-8 19:09
JSP?  直接用Spring boot @ResponseMapping
作者: cclylycc    时间: 2022-1-8 19:11
7836246 发表于 2022-1-8 19:09
JSP?  直接用Spring boot @ResponseMapping

responsebody?
作者: 7836246    时间: 2022-1-8 19:13
cclylycc 发表于 2022-1-8 19:11
responsebody?

对象转JSON  @responsebody
作者: gzlock    时间: 2022-1-8 19:13
你的size=0就是从数据库查询不到数据嘛
1先确定数据库有数据
2输出最终的sql语句方便在第三方数据库管理软件里测试,例如navicat,datagrip

作者: cclylycc    时间: 2022-1-8 19:14
gzlock 发表于 2022-1-8 19:13
你的size=0就是从数据库查询不到数据嘛
1先确定数据库有数据
2输出最终的sql语句方便在第三方数据库管理软 ...

有数据,size=1,sql没问题。就是返回不到前端
作者: gzlock    时间: 2022-1-8 19:15
3确定你的常量 index_house_location_num 大于0
作者: cclylycc    时间: 2022-1-8 19:15
gzlock 发表于 2022-1-8 19:15
3确定你的常量 index_house_location_num 大于0

这个也是确定无误的
作者: dragonfsky    时间: 2022-1-8 19:17
jsp接触的比较少 你试试前端f12调试下 看看接收到的是啥
作者: 华为任正非    时间: 2022-1-8 19:18
在controller return之前控制台输出下看看,如果有值那问题应该出在前端模板上,是不是那什么choose when写的阻拦了数据传递?
作者: mlc    时间: 2022-1-8 19:18
换成Get请求拿试试
作者: cclylycc    时间: 2022-1-8 19:25
华为任正非 发表于 2022-1-8 19:18
在controller return之前控制台输出下看看,如果有值那问题应该出在前端模板上,是不是那什么choose when写 ...
Mr.Qin 发表于 2022-1-8 19:01
那你不贴你的index模版相关代码出来也不知道你是咋取的值啊, freemarker?JSP? ...



这个出得来数据


这个出不来数据



后端输出有值,就是前端显示不出来,我把choose when都注释了也没,只有foreach留下了。
作者: 无缺    时间: 2022-1-8 19:39
没用过jsp,你直接序列化传回去在用Ajax修改不就行了吗
作者: ZeroOne    时间: 2022-1-8 19:41
cclylycc 发表于 2022-1-8 19:05
这个出得来数据


你是在逗我们吗?你首页 index 里面根本就没有返回 locationHouseList,你用 jsp 怎么去渲染?你把 getLocation 里的代码放到上面的 index 方法里面去就可以了。最后就是你用 ajax 请求 getLocation 是几个意思?看你代码就是用jsp渲染的,如果是js渲染,那么 getLocation 就加上 @ResponseBody 注解,直接将查询的结果 List 返回即可。
作者: HOH    时间: 2022-1-8 19:41
不想看,jsp不好调试就<% %>
作者: cclylycc    时间: 2022-1-8 19:44
本帖最后由 cclylycc 于 2022-1-8 19:45 编辑
ZeroOne 发表于 2022-1-8 19:41
你是在逗我们吗?你首页 index 里面根本就没有返回 locationHouseList,你用 jsp 怎么去渲染?你把 getLo ...


我前端是用百度地图API获取到城市名字,如重庆,然后想把 重庆 这个关键词返回到后端,我就想用getLocation接收,然后在model addattribute

//百度地图API功能
        var map = new BMap.Map('map');
        //获得当前城市
        var myCity = new BMap.LocalCity();
        myCity.get(myFun);
        function myFun(result){
            var cityName = result.name;
            var realCityName = cityName.replace("市","");
            var toRealCityName = realCityName.replace("省","");
            var a = toRealCityName + "优质房源";
            cityLocation.innerHTML = a;
            getLocationByIp(toRealCityName);
        }
作者: LikeOracle    时间: 2022-1-8 19:45
不懂,绑定
作者: 华为任正非    时间: 2022-1-8 19:45
那这真不知道了,只能排插两块:
1. houseService.findByLocation 和 houseService.findTopList 返回的数据类型是否一致?
2. 如果一样(比如都是List)那就是前端模板输出的问题了,重点排查那块。
我没用过你这个,只用过themyleaf,帮不了啥忙……
作者: dragonfsky    时间: 2022-1-8 19:49
你这多半是前端的问题 你得去前端f12看看
作者: 华为任正非    时间: 2022-1-8 19:49
ZeroOne 发表于 2022-1-8 19:41
你是在逗我们吗?你首页 index 里面根本就没有返回 locationHouseList,你用 jsp 怎么去渲染?你把 getLo ...

卧槽还真是,看了半天没注意,还是大佬厉害。
楼主那个是在Post里面调用了 /front/index,
get Mapping 的 index 里面根本没有这个值……
作者: Mr.Qin    时间: 2022-1-8 19:51
提示: 作者被禁止或删除 内容自动屏蔽
作者: xiaoqiang1998    时间: 2022-1-8 19:59
model里面放的参数是在页面上用的,model里面的参数是需要你在后端手动设置的. 你这个getLocation请求是返回/front/index这个页面,在/front/index页面对应的html中可以使用model中设置的参数,
作者: cclylycc    时间: 2022-1-8 20:06
华为任正非 发表于 2022-1-8 19:49
卧槽还真是,看了半天没注意,还是大佬厉害。
楼主那个是在Post里面调用了 /front/index,
get Mapping  ...

那咋改呢大佬。。。
作者: hugh_wick    时间: 2022-1-8 20:14
卧槽了。。都TM2022年了。还在写JSP。看着都心累
作者: ZeroOne    时间: 2022-1-8 20:39
cclylycc 发表于 2022-1-8 19:44
我前端是用百度地图API获取到城市名字,如重庆,然后想把 重庆 这个关键词返回到后端,我就想用getLocati ...

那就是后面那种情况,加@ResponseBody注解,直接返回查询结果List即可,最后的大问题就是你  getLocationByIp(toRealCityName); 后需要自己通过 js 将结果渲染到页面上去,你是不是认为能自动将 model 渲染进去?
你学JAVA EE开发多久了?连模板框架的运行原理都没搞明白,还能以为 ajax 获取的结果能够自动通过 jsp 的 foreach 渲染上去。jsp 渲染是在服务器上进行的,返回给客户端就是个静态的 html,js 获取的结果肯定是需要你自己手动通过 js 渲染到页面呀,还有就是你 jsp 中的 foreach 那块可以删了,或者抽取出来单独成一个jsp(这种做法你就可以不用加@ResponseBody注解,但返回值要改成抽取出来的jsp名称,最后js渲染直接用jquery的 html()方法即可)
PS:关键词一般说传给后端,后端才叫返回。。
作者: 华为任正非    时间: 2022-1-8 20:42
cclylycc 发表于 2022-1-8 20:06
那咋改呢大佬。。。


原来那种方法实现不了的。
如果是百度API获取参数,POST传入后端,那最好的方式就是返回json,然后前端javascript重新渲染。
JSP只能渲染一次,百度API是在index渲染后才执行的,所以没法传入后端重新渲染。
作者: 盯裆猫    时间: 2022-1-9 12:15
后端都只能一次渲染吧,要不用js改要不就等百度api返回内容之后再返回页面,函老弟这几年在大学干嘛呀




欢迎光临 全球主机交流论坛 (https://loc.010206.xyz/) Powered by Discuz! X3.4