我正在尝试将参数从JSP传递给Spring MVC控制器。但是控制器没有被调用。我已经阅读了很多相关的帖子,并尝试了各种解决方案,但它并不适合我。
我的web.xml如下所示:
<display-name>MyList</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>mylist</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mylist</servlet-name>
<url-pattern>/welcome.jsp</url-pattern>
<url-pattern>/welcome.html</url-pattern>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
我的控制器:
@RequestMapping(path = "/subcategory/{id}", method = RequestMethod.GET)
public String findSubcategory(@PathVariable int id,Model model) {
List<Category> subCategoryList = this.myListDao.getSubCategories(id);
model.addAttribute("subcategories", subCategoryList);
return "searchCategory" ;
}
My JSP中的相关代码如下
<spring:url value="/subcategory/1" var="formUrl"/>
<c:forEach var="category" varStatus="status" items="${categories}">
<li><a href="${fn:escapeXml(formUrl)}">${category.description}</a></li>
</c:forEach>
当我的网址为/subcategory.html
并且我的控制器中有@RequestMapping("/subcategory")
时,它会起作用。当我使用/subcategory/1
并更改相应的请求映射时,它不起作用。我尝试过各种网址模式,例如<url-pattern>/mylist/*</url-pattern><url-pattern>/MyList/*</url-pattern>
等。但没有任何工作。我非常感谢你解决这个问题的任何帮助。非常感谢。
答案 0 :(得分:0)
@RequestMapping(path = "/subcategory/{id}", method = RequestMethod.GET)
而不是路径,你应该使用值,如下所示:
@RequestMapping(value = "/subcategory/{id}", method = RequestMethod.GET)
答案 1 :(得分:0)
您的呼叫无法到达控制器,因为您的请求映射“/ subcategory / {id}”与您的调度程序servlet定义的任何url-pattern都不匹配。您可以尝试替换这些行:
library(data.table)
setDT(df)[df[, .(time = min(time):max(time)) , by = group], on = c("group", "time")]
# group time data
# 1: A 1 5
# 2: A 2 6
# 3: A 3 NA
# 4: A 4 7
# 5: B 1 8
# 6: B 2 9
# 7: B 3 10
# 8: C 5 1
# 9: C 6 NA
#10: C 7 2
#11: C 8 3
与
<url-pattern>/welcome.jsp</url-pattern>
<url-pattern>/welcome.html</url-pattern>
<url-pattern>*.html</url-pattern>
答案 2 :(得分:0)
您当前的servlet映射覆盖了默认或根servlet映射,
<servlet-mapping>
<servlet-name>mylist</servlet-name>
<url-pattern>/welcome.jsp</url-pattern>
<url-pattern>/welcome.html</url-pattern>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
您的以下映射允许接受任何带* .html的请求,因此您对/subcategory.html
的调用没有任何问题。
<url-pattern>*.html</url-pattern>
相反应该改为,
<servlet-mapping>
<servlet-name>mylist</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
要记住一些要点,
<url-pattern>/*</url-pattern>
通常建议Filter
使用此模式继续进行过滤器链接。否则,使用此模式将使您能够处理所有责任,如提供静态资源等,以便明确处理。