我有以下代码:

<c:forEach var="listValue" items="${upcomingMovieslists}">
        div style="border:thin inset #6E6E6E; text-align: justify;> <p margin-left: 1em;">&nbsp;&nbsp;<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=后,单引号(请参阅上面的操作)。

如果仍然遇到问题,也许尝试显示带有该参数的页面的控制器?

10-05 23:07