我有以下代码:
<c:forEach var="listValue" items="${upcomingMovieslists}">
div style="border:thin inset #6E6E6E; text-align: justify;> <p margin-left: 1em;"> <c:set var="movieName" scope="application" value="${listValue.key}"/><a href="/myapp/movie/SubmitMovie/" >${listValue.key}</a></p></div>
</c:forEach>
movieName将位于下一步页面中的@RequestParam字符串movieName中。
所以,当我运行这段代码时,我得到一个错误提示:
error:
message Required String parameter 'movieName' is not present
description The request sent by the client was syntactically incorrect.
控制器方式:
我的控制器将调用转到的类:
@RequestMapping(value="/SubmitMovie", method = RequestMethod.GET)
public ModelAndView getSearchedMovie(@RequestParam String movieName, ModelMap model)
该URL当前为:
/myapp/movie/SubmitMovie/
应该是
/myapp/movie/SubmitMovie/?movieName=deadpool
为了工作
我应该使用/?movieName =在下一页显示结果,但是与上述jsp代码一样,我不会以String格式获取movieName,而是以$ {movieName}的形式出现,该字符串不能被存在的String接受。在RequestParam中,因此将引发错误。
我想知道如何解决它以在URL中使用Stringformat获得电影名称,以便可以填充结果
谢谢
最佳答案
那里没有很多代码,所以我不确定您要做什么,但是您总是可以向请求参数添加required=false
条件,如下所示:
@RequestParam(value = "movieName", required = false) String movieName
那至少应该清除该错误。但是,如果模型中的逻辑确实需要movieName,那么您将需要对其进行重构-即,您的链接需要看起来像
href="/myapp/movie/SubmitMovie?movieName='${listValue.key}'"
。(注意:我从您的代码中推断出
${listValue.key}
是电影的名称。无论您希望控制器以@RequestParam String movieName
形式接收的任何变量,都应将其转义为href字符串中的?movieName=
后,单引号(请参阅上面的操作)。如果仍然遇到问题,也许尝试显示带有该参数的页面的控制器?