我有以下代码:
<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 String movieName 中。
所以,当我运行此代码时,我收到一条错误消息:
error:
message Required String parameter 'movieName' is not present
description The request sent by the client was syntactically incorrect.
Controller 方法:
我的 Controller 类到调用所在的位置:
@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 代码一样,我不会获得字符串格式的 movieName,而是以 ${movieName} 的形式出现,这是无法接受的RequestParam 中存在一个字符串,因此会引发错误。
我想知道如何修复它以获取 URL 中字符串格式的电影名称,以便我可以填充结果
谢谢
最佳答案
那里没有很多代码,所以我不知道你到底要做什么,但你总是可以向请求参数添加一个 required=false
条件,就像这样:
@RequestParam(value = "movieName", required = false) String movieName
这至少应该清除该错误。但是,如果模型中的逻辑确实需要 movieName,那么您将需要围绕它进行重构 - 即您的链接需要看起来像 href="/myapp/movie/SubmitMovie?movieName='${listValue.key}'"
。
(注意:我从您的代码中推断出 ${listValue.key}
是电影的名称。您希望 Controller 以 @RequestParam 字符串形式接收的任何变量movieName
,将其放在 href 字符串中的 ?movieName=
之后,并用单引号转义(参见上面我是如何做到的。)
如果您仍然遇到困难,也许可以尝试使用该参数显示页面的 Controller ?
关于java - 从 JSP 文件向 RequestParam 发送值时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36326233/