Spring-MVC:不会根据请求调用Controller方法

时间:2012-01-06 11:47:46

标签: spring-mvc osgi

在请求被触发时,我无法使用我的控制器。我看到了网站但我看不到消息属性“Hello World!”。整个事情是在osgi环境(处女座)。

@Controller
@RequestMapping("/metamodel")
public class FirstController {

    private static final Logger LOG = LoggerFactory.getLogger(FirstController.class);

    public FirstController() {
        LOG.info("------------ FirstController ------");
    }

    @RequestMapping(method = RequestMethod.GET)
    public void helloWorld(Model model) {
        model.addAttribute("message", "Hello World!");
    }
}

我可以看到日志,所以控制器就在那里。

views.xml

<tiles-definitions>
    <definition extends="default" name="metamodel/list">
        <put-attribute name="body" value="/WEB-INF/views/metamodel/list.jspx" />
    </definition>
</tiles-definitions>

webmvc-config.xml中

    <mvc:view-controller path="/metamodel" view-name="metamodel/list" />

list.jspx

<div xmlns:spring="http://www.springframework.org/tags" xmlns:jsp="http://java.sun.com/JSP/Page"
    xmlns:sec="http://www.springframework.org/security/tags"     xmlns:c="http://java.sun.com/jsp/jstl/core">

    <jsp:directive.page contentType="text/html;charset=UTF-8" />
    <jsp:output omit-xml-declaration="yes" />

    <h3><c:out value="${message}" /></h3>

</div>

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

尝试删除此内容:

<mvc:view-controller path="/metamodel" view-name="metamodel/list" />

并更改您的控制器方法以返回视图名称,如下所示:

@RequestMapping(method = RequestMethod.GET)
public String helloWorld(Model model) {
    model.addAttribute("message", "Hello World!");
    return "list";
}

请参阅16.14.4 Configuring View Controllers - mvc:view-controller应该用于创建网桥控制器,它只是将请求转发给视图而不需要任何逻辑(包括添加模型属性)。