Java 无法使带注释的SpringMVCPortlet正常工作

Java 无法使带注释的SpringMVCPortlet正常工作,java,spring,liferay-6,spring-portlet-mvc,Java,Spring,Liferay 6,Spring Portlet Mvc,这是我的控制器 @Controller @RequestMapping("VIEW") public class SearchController { private static final Log LOGGER = LogFactoryUtil.getLog(SearchController.class); @RenderMapping public String render() { return "view"; } @Act

这是我的控制器

@Controller
@RequestMapping("VIEW")
public class SearchController {

    private static final Log LOGGER = LogFactoryUtil.getLog(SearchController.class);

    @RenderMapping
    public String render() {

        return "view";
    }

    @ActionMapping(params = "action = getResults")
    public void getResults(@ModelAttribute("search") Search search, ActionRequest actionRequest,    ActionResponse actionResponse) {
        String keyword = search.getKeyword();
        LOGGER.info("Keyword: " + keyword);
    }

}
还有我的豆子

public class Search {

    private String keyword;

    public String getKeyword() {
        return keyword;
    }

    public void setKeyword(String keyword) {
        this.keyword = keyword;
    }

}
和my view.jsp

<%@page import="org.springframework.web.bind.annotation.RequestMethod"%>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<portlet:defineObjects />

<portlet:actionURL var = "getResultsURL">
    <portlet:param name="action" value="getResults"/>
</portlet:actionURL>

<form:form action="${getResultsURL}" commandName="search" method="POST">
    <form:input path="keyword"/>
    <input type="submit" value="Search">
</form:form>
如果我将@modeldattribute(“search”)作为render方法中的一个参数,它可以正常工作,但我知道它是绝对错误的(请纠正我)


有什么建议吗?

在呈现JSP页面时会出现此异常,对吗

SpringMVC告诉您,它在当前请求中找不到“search”属性。事实上,您的控制器没有将任何Search类实例放入SpringMVC模型

两种选择:

  • 使用@ModelAttribute注释为搜索类实例创建getter:

    @模型属性 公共搜索getSearch(){ 返回新搜索(); }

  • 将搜索类实例放入渲染方法中的Spring模型:

    @渲染映射 公共字符串渲染(模型){ addAttribute(“search”,newsearch()); 返回“视图”; }

  • 这样,表单标签将在给定的命令名下找到模型

    java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name   'search' available as request attribute