Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring控制器方法使用不同的参数共享我的多个@RequestMapping URL_Java_Spring_Jsp_Spring Mvc - Fatal编程技术网

Java Spring控制器方法使用不同的参数共享我的多个@RequestMapping URL

Java Spring控制器方法使用不同的参数共享我的多个@RequestMapping URL,java,spring,jsp,spring-mvc,Java,Spring,Jsp,Spring Mvc,我已在中向OwnerController类添加了以下方法: /“CodeMed”添加了下一个方法 @RequestMapping(value=“/owners/catowners”,method=RequestMethod.GET) 公共字符串FindDownersOfPtype(映射模型){ //查找特定类型宠物的主人 整型typeID=1;//这只是一个占位符 收集结果=this.clinicService.FinDownerTypeType(typeID); 模型。放置(“选择”,结果);

我已在中向OwnerController类添加了以下方法:

/“CodeMed”添加了下一个方法
@RequestMapping(value=“/owners/catowners”,method=RequestMethod.GET)
公共字符串FindDownersOfPtype(映射模型){
//查找特定类型宠物的主人
整型typeID=1;//这只是一个占位符
收集结果=this.clinicService.FinDownerTypeType(typeID);
模型。放置(“选择”,结果);
返回“所有者/猫所有者”;
}
//'''''''''''''''''''
由于petclinic数据库中猫的typeID为1,因此上面返回猫主人列表。但我也想在网站上为狗主人、蜥蜴主人、仓鼠主人和任何其他宠物的主人创建单独的页面。我是否需要为每种宠物类型创建一个单独版本的FinDownersOfPtype()?比如FindGowners()、findLizardOwners()、findHamsterOwners()等等。?或者我可以让findOwnersOfPetType()方法接受指示宠物类型的int参数吗

jsp文件呢?我是否需要为catowners.jsp、dogowners.jsp、lizardowners.jsp、hamberowners.jsp等创建一个单独的jsp文件。?或者我可以为每种类型的宠物创建一个用相同格式的不同数据填充的jsp吗

这在代码中看起来如何


ClinicService和OwnerRepository函数已经一起处理,因为我在上面发布的函数使用函数中创建的参数调用ClinicService方法

您可以将
请求映射
路径变量
一起使用。例如:

@RequestMapping(value = "/owners/{petId}", method = RequestMethod.GET)
public String findOwnersOfPetType(Map<String, Object> model,
    @PathVariable int petId) {
    //use id as before
}
@RequestMapping(value=“/owners/{petId}”,method=RequestMethod.GET)
公共字符串FindDownersOfPtype(映射模型,
@路径变量(int petId){
//像以前一样使用id
}

如果要在URL中使用字符串而不是整数,可以在URL中使用字符串,并在这些字符串及其ID之间具有枚举映射,从而使它们更易于使用。

您可以在请求映射中添加类型参数:

@RequestMapping(value = "/owners/{type}", method = RequestMethod.GET)
public String findOwnersOfPetType(@PathVariable("type") it type) {

}
因此,您不需要不同的控制器方法来处理多种类型

服务方法取决于您对域对象建模的方式。如果您有一个单独的类
Pet
,其中包含
petType
,您可以轻松地执行以下操作:

Collection<Owner> results = this.clinicService.findOwnerByPetType(type);
Collection results=this.clinicService.findownerTypeType(类型);

然后,该服务调用存储库方法
findOwnerByPetType(type)
,该方法返回所有者列表

请进一步说明返回的视图名称和jsp将如何受到影响。假设我们有
DogOwner
CatOwner
LizardOwner
。视图名称通常取决于是否需要单独的JSP来显示不同类型的宠物主人。如果需要单独的JSP,那么可以轻松地将参数映射到视图,方式与将字符串映射到ID(枚举)相同。但是您应该真正能够拥有一个合理通用的JSP。最后,这实际上是由您的数据模型驱动的,我没有足够的信息对此进行评论。@Aurand,谢谢+谢谢你的帮助。整个数据模型和整个应用程序代码都位于我上面文章顶部github petclinic页面的链接中。还请详细说明返回的视图名称和jsp将如何受到影响。假设我们有
DogOwner
CatOwner
LizardOwner
。你能发布你的域模型吗?我认为一个拥有
petType
Pet
类不应该拥有不同类型的所有者。类型为
dog
的宠物可能有一个
CatOwner
@micha。域模型和整个应用程序代码位于我上面原始帖子顶部petclinic github页面的链接+谢谢你的帮助。非常感谢。
Collection<Owner> results = this.clinicService.findOwnerByPetType(type);