我正在尝试找出抛出以下异常的原因。
我认为这是因为在“ View ”模式下访问了一个 portlet,但出于某种原因我不知道 spring servlet 容器无法满足请求,这是否正确?
以下异常集中的“参数映射”在哪里?
org.springframework.web.portlet.NoHandlerFoundException: No matching handler method found for portlet request: mode 'view', phase 'ACTION_PHASE', parameters map[empty]
这是 Controller :
@Controller
@RequestMapping("VIEW")
public class DetailsController {
@RequestMapping("VIEW")
public String showDetails(final ModelMap modelMap, final RenderRequest renderRequest) {
return "allDetails/details";
}
}
最佳答案
这里有 3 个我可以想出的点子(知道你的 Controller 是如何调用的会有所帮助)。 尝试其中的一种或混合使用,然后告诉我它是否有效。
想法 1: 删除 ("VIEW")
对于 showDetails @RequestMapping 注释。
...
public class DetailsController {
@RequestMapping
public String showDetails(final ModelMap modelMap, final RenderRequest renderRequest) {
return "allDetails/details";
}
}
如果您的调用 JSP 有这样的东西,这可能会起作用:<portlet:actionURL/>
: showDetails 将是默认的渲染方法。
想法 2:为您的 @RequestMapping 方法注释指定操作参数。
...
public class DetailsController {
@RequestMapping(params = "action=viewDetails")
public String showDetails(final ModelMap modelMap, final RenderRequest renderRequest) {
...
}
}
如果您的调用 JSP 有这样的东西,这可能会起作用:
<portlet:actionURL ... >
<portlet:param name="action" value="viewDetails">
</portlet:actionURL>
想法 3:为操作阶段添加一个空方法。
...
public class DetailsController {
@RequestMapping(params = "action=viewDetails") // render phase
public String showDetails(final ModelMap modelMap, final RenderRequest renderRequest) {
...
}
...
// Empty method
@RequestMapping(params = "action=viewDetails") // action phase
public void actionMethod() {
}
}
如果您的调用 JSP 有这样的东西,这可能会起作用:
<portlet:actionURL ... >
<portlet:param name="action" value="viewDetails">
</portlet:actionURL>
关于java - NoHandlerFoundException 集中的 'parameters map' 在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12744806/