我试图弄清楚为什么抛出下面的异常。

我认为这是因为在“ View ”模式下访问了portlet,但是由于某种原因,我不知道spring servlet容器无法满足请求,这是正确的吗?

下面的异常集中的“参数图”在哪里?



这是 Controller :

@Controller
@RequestMapping("VIEW")
public class DetailsController {
    @RequestMapping("VIEW")
    public String showDetails(final ModelMap modelMap, final RenderRequest renderRequest) {
        return "allDetails/details";
    }
}

最佳答案

这是我可以提出的3个想法(知道如何调用 Controller 将有所帮助)。
尝试其中一种或多种,​​然后告诉我是否可行。

想法1:删除showDetails @RequestMapping批注的("VIEW")

...
public class DetailsController {

    @RequestMapping
    public String showDetails(final ModelMap modelMap, final RenderRequest renderRequest) {
        return "allDetails/details";
    }

}

如果调用的JSP具有以下内容,则此方法可能有效:<portlet:actionURL/>:showDetails将是默认的render方法。

想法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>

10-02 11:07