参数已添加到模型但未在页面上显示

时间:2014-11-24 16:38:40

标签: java spring jsp

我正在尝试使用Spring MVC创建我的第一个Web项目 当我尝试显示已放入模型的变量时,我遇到了问题。
但在我的页面上看到我的测试参数,但我的表是空的 请告诉我,我错过了什么。

我正在使用瓷砖控制器,所以这是我的home.jsp的瓷砖,我想要显示我的列表:

<div id="indexLeftColumn">
<div id="welcomeText">
    <p>[ cool picture ]</p>
</div>
</div>

<div id="indexRightColumn">
<div id="deviceList">
    Table with list of devices</br>
    ${blah}
     <table class="table" border="1">
            <thead>
                <tr>
                    <th>Device ID</th>
                </tr>
            </thead>
            <tbody>
                <c:forEach items="${hubsIDList}" var="hub" >
                    <tr>

                        <td>${hub}</td>

                    </tr>
                </c:forEach>
            </tbody>
</table>
</div>


</div>

这是我的控制器的一部分,它添加值并返回我的home.jsp 我添加了新参数&#34; blah&#34;只是为了测试,参数不会在其他地方消失

  @RequestMapping(value = "/home", method = RequestMethod.GET)
public String home(Model model) {
    log.info("Loading homepage");
    UserDetailsImpl userDetails = (UserDetailsImpl) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
    ArrayList<String> hubsID =(ArrayList<String>) userDetails.getParameter("hubsID"); //checked - it's not empty and truly Array list of Strings
    model.addAttribute("hubsIDList",hubsID);  
    model.addAttribute("blah","Test if parameters still here"); //added for test that my parameters aren't dissapear
    return "home";
}

这是我的包含

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="spring_form" %>
<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>

UPD
尝试使用如下控制器metod,但仍然没有结果 - 测试参数在页面上可见,但表是空的

@RequestMapping(value = "/home", method = RequestMethod.GET)
public ModelAndView  home(Model model) {
    HashMap<String,Object> modelParams = (HashMap)model.asMap();
    log.info("Loading homepage");
    UserDetailsImpl userDetails = (UserDetailsImpl) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
    ArrayList<String> hubsID =(ArrayList<String>) userDetails.getParameter("hubsID");
    modelParams.put("hubsIDList",hubsID);
    modelParams.put("blah","Test if parameters still here");

    return new ModelAndView("home",modelParams);
}

1 个答案:

答案 0 :(得分:0)

问题出在我的瓷砖控制器中。不知何故,我的taglib没有连接到我的home.jsp磁贴,所以我的c:标签无法使用。
如果我直接在我的jsp中使用taglib - 一切正常。

希望这可以帮助有同样问题的人。

Thanx @Koitoer在我的尝试中帮助了我。