Java中controller层接Map_spring-mvc中controller,前端传过来的参数,用数组,列表,Map来接受参数的方式...
时间: 2024-03-21 12:39:40 浏览: 154
在Java的Spring MVC框架中,Controller层接收前端传递的参数可以使用以下方式:
1. 使用Map来接收参数:
```java
@RequestMapping("/test")
public String test(Map<String, Object> map) {
String username = (String)map.get("username");
// ...
return "test";
}
```
2. 使用@RequestParam注解来接收参数:
```java
@RequestMapping("/test")
public String test(@RequestParam("username") String username) {
// ...
return "test";
}
```
3. 使用数组来接收参数:
```java
@RequestMapping("/test")
public String test(String[] usernames) {
// ...
return "test";
}
```
4. 使用List或者Set来接收参数:
```java
@RequestMapping("/test")
public String test(List<String> usernames) {
// ...
return "test";
}
```
注意:以上示例中的参数名和前端传递的参数名必须一致,否则无法正确接收参数。
相关问题
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'webMvcRequestHandlerProvider' defined in URL [jar:file:/Users/mac/Documents/workspace/repositoryNew/io/springfox/springfox-spring-webmvc/2.10.5/springfox-spring-webmvc-2.10.5.jar!/springfox/documentation/spring/web/plugins/WebMvcRequestHandlerProvider.class]: Unsatisfied dependency expressed through constructor parameter 2; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'projectClientImpl' method org.wlgs.feign.ProjectClientImpl#getRoleCodeList() to {GET /cbsNewAllprocesses/getRoleCodeList}: There is already 'cbsNewAllprocessesController' bean method org.wlgs.controller.CbsNewAllprocessesController#getRoleCodeList() mapped.
根据你提供的信息,看起来是由于Spring Boot应用程序中的Bean依赖关系问题导致的错误。具体来说,`webMvcRequestHandlerProvider` bean在构造函数参数2处存在不满足依赖的问题,导致应用程序无法启动。
检查`webMvcRequestHandlerProvider` bean的构造函数参数2的依赖项,并确保它们都已经正确地注入或配置。特别是要检查`requestMappingHandlerMapping` bean的配置是否正确,因为它在该错误中提到了。
另外,还要检查应用程序中是否存在重复的映射,如错误信息中的`getRoleCodeList`方法,确保所有映射都是唯一的。
希望这可以帮助你解决问题。
Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'equipmentClassRestController' method public com.icwind.efactory.mdm.rest.asset.view.AssetClassView com.icwind.efactory.mdm.rest.asset.controller.EquipmentClassRestController.getById(java.lang.String) to {[/equipment-classes/{id}],methods=[GET]}: There is already 'auxiliaryEquipmentClassRestController' bean method public com.icwind.efactory.mdm.rest.asset.view.AssetClassView com.icwind.efactory.mdm.rest.asset.controller.AuxiliaryEquipmentClassRestController.getById(java.lang.String) mapped. at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry.assertUniqueMethodMapping(AbstractHandlerMethodMapping.java:577) ~[spring-webmvc-4.3.24.RELEASE.jar!/:4.3.24.RELEASE]
根据错误信息,你的 `EquipmentClassRestController` 类中的 `getById` 方法存在与其他方法相同的请求映射路径,导致了冲突。
要解决这个问题,你可以尝试以下方法之一:
1. 修改请求映射路径:检查你的代码,确保 `getById` 方法的请求映射路径与其他方法不重复。你可以修改 `@RequestMapping` 或 `@GetMapping` 注解中的路径值,使其唯一。
2. 合并到同一个类中:如果 `EquipmentClassRestController` 和 `AuxiliaryEquipmentClassRestController` 类中的方法逻辑相似,你可以考虑将它们合并到同一个类中,并在类级别上定义请求映射路径。这样可以避免冲突,并简化代码结构。
请根据你的具体需求选择适合的解决方案来解决冲突。确保每个方法都有唯一的请求映射路径,或者将相似的方法合并到同一个类中。
阅读全文