我正在尝试使用JSP中的链接将参数传递给Spring控制器中的方法,但是我收到了404错误。这是我的JSP代码的相关部分。
<c:forEach var="bulletin" items="${bulletins}">
<c:if test="${bulletin.approved}">
<a href="/bulletin/${bulletin.id}" >${bulletin.name}
-- ${bulletin.subject}</a>
<br />
<br />
</c:if>
</c:forEach>
这是我控制器中的方法。
@RequestMapping(value = "/bulletin/{id}", method = RequestMethod.GET)
public ModelAndView getSingleBulletin(@PathVariable("id") int id,
Model model) {
ModelAndView mav = new ModelAndView();
try {
Bulletin bulletin = bulletinDAO.getSingleBulletin(id);
mav.setViewName("WEB-INF/jsp/ShowBulletin");
if (bulletin != null) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
.currentRequestAttributes();
HttpSession session = attributes.getRequest().getSession(true);
session.setAttribute("bulletin", bulletin);
}
} catch (Exception e) {
System.out.println(e.getMessage());
mav.setViewName("WEB-INF/jsp/FailurePage");
}
return mav;
}
答案 0 :(得分:1)
我认为这是路径问题。
检查包含所讨论的'getSingleBulletin'功能的控制器的路径 是否设置为根路径?(/) 如果不是这个原因。
例如,
/* path to below controller */
@RequestMapping("/toController")
public class TheController {
/* path to below function (in the controller) */
@RequestMapping(value="getSingleBulletin", method=RequestMethod.GET)
public ModelAndView getSingleBulletin(/*parameters*/) {
}
}
在这种情况下,如果要向'getSingleBulletin'函数发送请求,则必须将锚标记中的路径设置为
<a href="/toController/getSingleBulletin?id=${bulletin.id}">${bulletin.name} -- ${bulletin.subject}</a>
如果控制器的路径不是root('/'),并且在没有'controller path'的情况下设置锚标记中的路径,就像你的代码一样
<a href="/getSingleBulletin?id=${bulletin.id}">${bulletin.name} -- ${bulletin.subject}</a>
Spring MVC试图找到一个将RequetMapping转换为'/ getSingleBulletin'的控制器,这会导致404错误(如果没有定义这样的控制器),而不是'TheController'中的函数'getSingleBulletin'。
我希望这会对你有所帮助:)。
答案 1 :(得分:0)
问题解决了。这是我的网址。
<a href="<c:url value="/bulletin/${bulletin.id}" />" >${bulletin.name} -- ${bulletin.subject}</a>
这是我的控制器方法。
@RequestMapping(value = "/bulletin/{id}", method = RequestMethod.GET)
public String getSingleBulletin(@PathVariable("id") int id, Model model) {
try {
Bulletin bulletin = bulletinDAO.getSingleBulletin(id);
model.addAttribute("bulletin", bulletin);
return "ShowBulletin";
} catch (Exception e) {
System.out.println(e.getMessage());
return "FailurePage";
}
}