0

我有一个类 Module 与类序列的 OneToMany 绑定。我的目标是显示模块列表,并通过单击其中一个,显示相关的序列列表但是它不起作用,我有一个 HTTP 500 错误。

这是我的控制器:

@RequestMapping(value="formation", method = RequestMethod.GET)
public ModelAndView allModules() {
List<Module> allModules = moduleService.findAll();
return new ModelAndView("formation", "modules", allModules);
}

@RequestMapping(value="sequences/{module}", method = RequestMethod.GET)
public String displaySequences(@PathVariable ("module") Module module, Model model) {
List<Sequence> allSequences = sequenceService.findByModule(module);
model.addAttribute("sequences", allSequences);
return "sequences";
}

以及显示模块列表以返回序列列表的 jsp

<c:forEach items="${modules}" var="module">
            <ul>
                <li><a href="sequences/${module}">${module.titre}</a>
                    <br/>
                </li>
            </ul>
        </c:forEach>

那么,我的错误来自哪里?

当我这样做时它会起作用:

    @RequestMapping(value="/sequences/{moduleId}", method = RequestMethod.GET)
public String displaySequences(@PathVariable ("moduleId") Long moduleId, Model model) {
Module module = moduleService.findById(moduleId);
model.addAttribute("module", module);
return "sequences";
}

我将链接更改为:

<a href="sequences/${module}">${module.titre}

但我想了解我的错误。

4

1 回答 1

0

您无法显示序列的原因是 Spring 不知道如何解析它

/cmap-web/sequences/com.almerys.jpa.tomcatspring.Module@12b0f0ae

进入模块实例。

您可以在本节最后一段的Spring 文档中阅读此内容。16.3.2.2 URI Template Patterns为了方便,我把它贴在这里。

@PathVariable 参数可以是任何简单类型,例如 int、long、Date 等。Spring 会自动转换为适当的类型,或者如果它失败则抛出 TypeMismatchException。您还可以注册对解析其他数据类型的支持。请参阅第 16.3.3.14 节,“方法参数和类型转换”和第 16.3.3.15 节,“自定义 WebDataBinder 初始化”。

于 2012-08-12T19:37:17.270 回答