无法从jsp到弹簧控制器获取参数

时间:2014-11-03 14:40:32

标签: java spring jsp spring-mvc

我无法从JSP获取值到我的Spring控制器,下面是我的代码片段。

JSP中的

我已经定义了像

这样的参数
<input type="hidden" id="categoryId" name="categoryId" value="<c:out value="${category.categoryId}"/>" />
<input type="hidden" id="sortBy" name="sortBy" value="<c:out value="${requestScope.sortBy}"/>" />
<input type="hidden" id="orderBy" name="orderBy" value="<c:out value="${requestScope.orderBy}"/>" />

我的控制器看起来像

@RequestMapping(value = "category/listCategory.htm")
public ModelAndView getList(HttpServletRequest request) {

     long longCurrentPage = CommonUtils.checkPaginationAttributes(request);
     String orderBy = request.getParameter(const_OrderBy);
     String sortBy = request.getParameter(const_SortBy);    
     List<Category> categoryList = categoryService.getCategoryList(longCurrentPage, orderBy, sortBy);
    ...
    ...
    ...
    request.setAttribute("currentPage", new Long(longCurrentPage));
        request.setAttribute(const_OrderBy, orderBy);
        request.setAttribute(const_SortBy, sortBy); 
    ModelAndView modelandView = new ModelAndView("listCategory","categoryList",categoryList);

从控制器到JSP的值设置正常,而从JSP获取相同的值则为null

我也试过

public ModelAndView getList(
        @RequestParam(value = "orderBy", required = false, defaultValue = "") String orderBy,
        @RequestParam(value = "sortBy", required = false, defaultValue = "") String sortBy,
        @RequestParam(value = "oortBy", required = false, defaultValue = "") String oortBy,
        @RequestParam(value = "isPaginationClicked", required = false, defaultValue = "") String isPaginationClicked,
        @RequestParam(value = "currentPage", required = false, defaultValue = "") String currentPage)

仍然没有得到价值,

请帮助..先谢谢...

3 个答案:

答案 0 :(得分:0)

您需要使用Spring输入标记而不是HTML输入标记。

首先定义命名空间:

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>

然后使用Spring输入标签:

<form:input type="hidden" id="categoryId" path="categoryId" value="<c:outvalue="${category.categoryId}"/>" />

答案 1 :(得分:0)

首先,您可以使用<sf:input .../>之类的弹簧选项卡来定义输入字段 (<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form"%>),并包含JSP中要发布服务器端的所有字段。这应该有用。

其次,在控制器中,你可以定义像ListDTO这样的对象,它包含你从JSP页面发布的所有字段,并将@ModelAttribute添加到方法的参数中,如下所示:

@RequestMapping(value = "category/listCategory.htm")
public ModelAndView getList(HttpServletRequest request,@ModelAttribute ListDTO listDTO) {

}

答案 2 :(得分:0)

谢谢,在我使用spring form标签和一个单独的DTO对象从JSP传输数据后,它为我工作了但是我仍然不明白为什么我无法从我的请求对象访问输入字段控制器。 无论如何,我的问题已经解决了,多亏了你们两个。