【发布时间】:2015-07-09 06:22:13
【问题描述】:
我正在尝试使用 jstl 填充我的 jsp 下拉列表。我的jsp是这样映射的。
<servlet>
<jsp-file>/WEB-INF/views/dilini/newjsp.jsp</jsp-file>
<servlet-name>newjsp</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>newjsp</servlet-name>
<url-pattern>/newjsp</url-pattern>
</servlet-mapping>
这也是我加载的 jstl 下拉菜单。
<div class="dropdown">
<button class="btn btn2 btn-default dropdown-toggle" type="button" id="menu2" data-toggle="dropdown">--Select--
<span class="caret"></span></button>
<ul class="dropdown-menu" role="menu" aria-labelledby="menu2">
<c:forEach items="${personList}" var="person">
<li role="presentation"><a data-myAttribute="${person.getId()}" class="list2" href="#">${person.getName()}</a></li>
</c:forEach>
</ul>
</div>
这是我的控制器 servlet。
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try {
CasualLeaveService service1 = new CasualLeaveServiceImpl();
List<Person> personList = service1.searchName();
if (personList.isEmpty()) {
response.getWriter().write("EMPTY ");
} else {
response.getWriter().write("NOT EMPTY ");
request.setAttribute("personList", personList);
RequestDispatcher rd = getServletContext().getRequestDispatcher("/newjsp");
rd.forward(request, response);
}
} catch (Exception e) {
e.printStackTrace();
}
}
当我自己运行控制器时,它会显示类似这样的内容。
我真的不明白为什么 servlet 看不到下拉菜单。请帮我。谢谢。
添加了更多答案。希望这会有所帮助。
另外,当 jsp 调用“通过单击按钮或单击链接”时,我应该添加另一个,您应该首先到达控制器,然后控制器将重定向 jsp。这是缺少的部分。
再次感谢大家的支持。
【问题讨论】:
-
嗯,你有什么问题?我觉得一切都很好。
-
问题是当我加载的jsp列表是空的。该图像是我运行 servlet 时的图像。
-
当然是空的! servlet 生成
personList,没有 servlet 就没有可迭代的内容。 -
@JozefChocholacek 你能告诉我如何填充这个列表吗?
-
好吧,您可以将相关代码从 servlet 复制到您的 JSP(作为 scriptlet),但我不建议这样做。你做得对(除非你不应该在 servlet 中使用
response.getWriter().write(...);),servlet 应该扮演控制器部分,JSP 应该只是视图。参见例如thejavageek.com/2013/08/11/… 了解有关 MVC 架构的更多详细信息。