Spring MVC 页面传参 Controller 获取不到~大神求救~~

librae0592 2015-08-29 09:35:08
JSP 页面往后台传一对象,对象的属性分别用 链接后的参数 还有 页面属性来传,对象为 pageModel 属性为 pageNo 和 pageSize
其中 pageNo 作为链接后的参数传
<script type="text/javascript">
function find(page){
document.getElementById("form1").action="user/findUser.do?pageNo="+page;
document.getElementById("form1").submit();
}
</script>

pageSize 作为页面中属性传
<input type="hidden" name="pageSize" value="10">

结果后台的 Controller 里面只取到 pageSize 的值。。取不到 pageNo 的值。。

@RequestMapping("/findUser")
public String findUser(PageModel<User> pageModel,Model model) throws Exception{

System.out.println("findUser method is in...pageNo is "+pageModel.getPageNo()+" and pageSize is "+pageModel.getPageSize());
。。。。。
}
打印出来是 findUser method is in...pageNo is 0 and pageSize is 10
崩溃了~~求大神答疑解惑~~~
...全文
1923 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
a_b_a_b_a_b_a_b 2015-08-31
  • 打赏
  • 举报
回复
spring配置呢?返回页面的配置,
scmod 2015-08-30
  • 打赏
  • 举报
回复
为啥post就行了.. get难道还会对?后面参数做点调整什么的...
librae0592 2015-08-30
  • 打赏
  • 举报
回复
引用 6 楼 shijing266 的回复:
@RequestMapping("/findUser") 改成: @RequestMapping(value="/findUser",method=RequestMethod.GET)
你提醒我了。。FORM 里面少写了 action= post 。。。加上后后台取到数据了。。但是又有新的问题。。页面回不来。。。 JSP 页面: <script type="text/javascript"> function find(page){ document.getElementById("pageform").action="user/findUser.do?pageNo="+page; // alert(document.getElementById("pageform").action); document.getElementById("pageform").submit(); } </script> <form id="pageform" action="" method="post"> <c:choose> <c:when test="${pageModel!=null}"> <input type="hidden" name="totalRecords" value="${pageModel.totalRecords}"> <input type="hidden" name="totalPages" value="${pageModel.totalPages}"> </c:when> <c:otherwise> </c:otherwise> </c:choose> <input type="hidden" name="pageSize" value="2"> <table class="tableborder" cellpadding="2" cellspacing="1"> <tbody> <tr class="smalltxt" bgcolor="#f3f6fa"> <td class="header">  ${pageModel.totalRecords}  </td> <td class="header">  ${pageModel.pageNo}/${pageModel.totalPages}  </td> <td>   <a href="${pageContext.request.contextPath }/user/findUser.do?pageNo=1&pageSize=2"> 首  页 </a> </td> <c:if test="${pageModel.pageNo > 1}"> <td>   <a href="#" onclick="find(${pageModel.pageNo}-1)"> 上一页 </a> </td> </c:if> <c:if test="${pageModel.pageNo < pageModel.totalPages}"> <td>   <a href="#" onclick="find(${pageModel.pageNo}+1)"> 下一页 </a> </td> </c:if> <td>   <a href="#" onclick="find(${pageModel.totalPages})"> 尾  页 </a> </td> </tr> </tbody> </table> </form> Controller: //分页查找用户 @RequestMapping("/findUser") public String findUser(PageModel<User> pageModel,Model model) throws Exception{ // System.out.println("findUser method is in...pageNo is "+page); // pageModel.setPageNo(pageNo); System.out.println("findUser method is in...pageNo is "+pageModel.getPageNo()+" and pageSize is "+pageModel.getPageSize()); List<User> users = userService.findUsersByPage(pageModel); pageModel.setList(users); if(pageModel.getTotalRecords()==0){ pageModel.setTotalRecords(userService.countUsers()); pageModel.setTotalPages((pageModel.getTotalRecords() + pageModel.getPageSize()- 1) / pageModel.getPageSize()); } System.out.println("findUser method is in...TotalRecords is "+pageModel.getTotalRecords()+" and TotalPages is "+pageModel.getTotalPages()); System.out.println("findUser method is in...UserList is "+pageModel.getList().size()); model.addAttribute("pageModel",pageModel); return "user/userList"; }
  • 打赏
  • 举报
回复
如果实在获取不到,那就别拼接在action后面了,弄一个隐藏域hidden, name设置为pageNo,然后你把值放到隐藏域里面,在提交form
  • 打赏
  • 举报
回复
@RequestMapping("/findUser") 改成: @RequestMapping(value="/findUser",method=RequestMethod.GET)
librae0592 2015-08-30
  • 打赏
  • 举报
回复
引用 4 楼 scmod 的回复:
('1')改成(1)看下, 还有看下web控制台有传过去pageNo这个东西不? 参数之间不知道要不要自己加个&
就是控制台没有传过去。。 第一个参数不用加 & 的吧。。刚试过了加了还是传不过去。。
scmod 2015-08-30
  • 打赏
  • 举报
回复
('1')改成(1)看下, 还有看下web控制台有传过去pageNo这个东西不? 参数之间不知道要不要自己加个&
librae0592 2015-08-30
  • 打赏
  • 举报
回复
再过滤一下问题。。 就是浏览器直接输入 http://127.0.0.1:8080/shopping/user/findUser.do?pageNo=1 后台能取到 pageNo 值 但是用 <script type="text/javascript"> function find(page){ document.getElementById("form1").action="user/findUser.do?pageNo="+page; document.getElementById("form1").submit(); } </script> <a href="#" onclick="find(1)"> 首  页 </a> 后台就得不到 pageNo 值。。 死活不得其解啊。。。
librae0592 2015-08-30
  • 打赏
  • 举报
回复
引用 16 楼 qq_21873571 的回复:
返回值改成ModelAndView试试吧
不行。。之前试过了。。。
qq_21873571 2015-08-30
  • 打赏
  • 举报
回复
返回值改成ModelAndView试试吧
librae0592 2015-08-30
  • 打赏
  • 举报
回复
看 12/13 楼吧~~点击 首页 (链接访问)可以得到列表返回到 user/userList.jsp 但是点击其他的(通过 FORM 提交)返回不到 user/userList.jsp ,后台方法能执行得到结果,返回视图的时候有问题,回到 http://127.0.0.1:8080/shopping/# 了。。。。 但是不知道错在哪里。。。求大神指点。。
  • 打赏
  • 举报
回复
我更不知道了.....
librae0592 2015-08-30
  • 打赏
  • 举报
回复
补充一下页面

<form id="pageform" action="" method="post">
			
			<c:choose>  
  				<c:when test="${pageModel!=null}"> 
	  				<input type="hidden" name="totalRecords" value="${pageModel.totalRecords}">
	  				<input type="hidden" name="totalPages" value="${pageModel.totalPages}">
					
			   	</c:when>  
			   	<c:otherwise> 
			  		
			  	</c:otherwise>  
			</c:choose> 
			
			<input type="hidden" name="pageSize" value="2">
                       <table class="tableborder" cellpadding="2" cellspacing="1">
												<tbody>
													<tr class="smalltxt" bgcolor="#f3f6fa">
														<td class="header">
															 ${pageModel.totalRecords} 
														</td>
														<td class="header">
															 ${pageModel.pageNo}/${pageModel.totalPages} 
														</td>
														<td>
															 
															<a href="${pageContext.request.contextPath }/user/findUser.do?pageNo=1&pageSize=2"> 首  页 </a>
														</td>
														<c:if test="${pageModel.pageNo > 1}">
															<td>
																 
																<a  href="#" onclick="find(${pageModel.pageNo}-1)"> 上一页 </a>
															</td>
														</c:if>
														<c:if test="${pageModel.pageNo < pageModel.totalPages}">
															<td>
																 
																<a href="#" onclick="find(${pageModel.pageNo}+1)"> 下一页 </a>
															</td>
														</c:if>
														<td>
															 
															<a href="#" onclick="find(${pageModel.totalPages})"> 尾  页 </a>
														</td>
														
														
													</tr>
												</tbody>
		</table>
 </form>
librae0592 2015-08-30
  • 打赏
  • 举报
回复

<script type="text/javascript">
			function find(page){
				
				document.getElementById("pageform").action="user/findUser.do?pageNo="+page;
			//	alert(document.getElementById("pageform").action);
				document.getElementById("pageform").submit();
			}
		</script>



@RequestMapping("/findUser")
	public String findUser(PageModel<User> pageModel,Model model) throws Exception{
//		System.out.println("findUser method is in...pageNo is "+page);
//		pageModel.setPageNo(pageNo);
		System.out.println("findUser method is in...pageNo is "+pageModel.getPageNo()+" and pageSize is "+pageModel.getPageSize());
		List<User> users = userService.findUsersByPage(pageModel);
		pageModel.setList(users);
		if(pageModel.getTotalRecords()==0){
			pageModel.setTotalRecords(userService.countUsers());
			pageModel.setTotalPages((pageModel.getTotalRecords() + pageModel.getPageSize()- 1) / pageModel.getPageSize());
		}
		System.out.println("findUser method is in...TotalRecords is "+pageModel.getTotalRecords()+" and TotalPages is "+pageModel.getTotalPages());	
		System.out.println("findUser method is in...UserList is "+pageModel.getList().size());	
		model.addAttribute("pageModel",pageModel);
		return "user/userList";
	}
控制台信息 findUser method is in...pageNo is 2 and pageSize is 2 http-8080-2 2015 八月 30 13:42:38,038 [DEBUG] findUsersByPage:46 - ooo Using Connection [jdbc:mysql://127.0.0.1:3306/shopping, UserName=root@127.0.0.1, MySQL-AB JDBC Driver] http-8080-2 2015 八月 30 13:42:38,038 [DEBUG] findUsersByPage:46 - ==> Preparing: select * from user limit ?,? http-8080-2 2015 八月 30 13:42:38,039 [DEBUG] findUsersByPage:46 - ==> Parameters: 2(Integer), 4(Integer) findUser method is in...TotalRecords is 5 and TotalPages is 3 findUser method is in...UserList is 3 控制台信息可以看到方法已经进去了。。分页信息也得到了。。就是最后回到视图的时候异常了。。可是我不知道问题出在哪里。。。
librae0592 2015-08-30
  • 打赏
  • 举报
回复
引用 10 楼 shijing266 的回复:
页面回不来就看你spring 关于返回页面的配置了,还有你返回的user/userList 这个地址 对比一下
版主大大。。配置是没问题的。。地址栏输入用GET 方式提交后就可以返回来 http://127.0.0.1:8080/shopping/user/findUser.do?pageNo=1&pageSize=2 但是页面上拼 ACTION 地址用 form submit 后回不到页面。。应该是异常了。。回到的是根路径 http://127.0.0.1:8080/shopping/#了 不知道怎么查。。。
  • 打赏
  • 举报
回复
页面回不来就看你spring 关于返回页面的配置了,还有你返回的user/userList 这个地址 对比一下
librae0592 2015-08-29
  • 打赏
  • 举报
回复
页面上通过 <a href="#" onclick="find('1')"> 首  页 </a>
来得到 pageNo 传到后台。。
目前还没搞定。。有大神光临么。。
librae0592 2015-08-29
  • 打赏
  • 举报
回复
测试了下浏览器直接敲 http://127.0.0.1:8080/shopping/user/findUser.do?pageNo=1 后台是可以取到值的。。 那么应该是 JS 里面拼 ACTION 取的值不对了。。
[ 2021年,将Spring全家桶的课程进行Review,确保不再有顺序错乱等问题导致学员看不懂内容,进入2022年,将Spring的课程进行整理,整理为案例精讲的系列课程,并开始逐步增加高阶的Spring Security等内容,课件将逐步进行上传,敬请期待! ]本课程是Spring全家桶案例精讲课程的第二部分Spring MVCSpring案例精讲课程以真实场景、项目实战为导向,循序渐进,深入浅出的讲解Java网络编程,助力您在技术工作中更进一步。 本课程聚焦Java Spring的Web知识点,主要是关于Spring MVC的应用,包含:表单的增删改查、国际化、过滤器、拦截器、日志Log4j2及slf4j的使用、主题更改网站皮肤及样式、文件上传等的案例讲解,并且最后以一个SSM(Spring+Spring MVC+Mybatis)贯穿前后台的案例作为Spring MVC课程的终奖, 从而使大家快速掌握Spring的基础核心知识,快速上手,为面试、工作等做好充足准备。 由于本课程聚焦于案例,即直接上手操作,对于Spring的原理等不会做过多介绍,希望了解原理等内容的需要通过其他视频或者书籍去了解,建议按照该案例课程一步步做下来,之后再去进一步回顾原理,这样能够促进大家对原理有更好的理解。 【通过Spring全家桶,我们保证你能收获到以下几点】 1、掌握Spring全家桶主要部分的开发、实现2、可以使用Spring MVCSpring Boot、Spring Cloud及Spring Data进行大部分的Spring开发3、初步了解使用微服务、了解使用Spring进行微服务的设计实现4、奠定扎实的Spring技术,具备了一定的独立开发的能力  【实力讲师】 毕业于清华大学软件学院软件工程专业,曾在Accenture、IBM等知名外企任管理及架构职位,近15年的JavaEE经验,近8年的Spring经验,一直致力于架构、设计、开发及管理工作,在电商、零售、制造业等有丰富的项目实施经验 【本课程适用人群】如果你是一定不要错过!  适合于有JavaEE基础的,如:JSP、JSTL、Java基础等的学习者没有基础的学习者跟着课程可以学习,但是需要补充相关基础知识后,才能很好的参与到相关的工作中。 【Spring全家桶课程共包含如下几门】 

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧