![](/img/trans.png)
[英]how to get the mapped URL from controller name + action name in springmvc?
[英]How to get JSON result of a mapped URL
假設我們有以下控制器
@Controller
@RequestMapping("/Index")
public class ControllerClass {
@RequestMapping("/Result")
@ResponseBody
public List<Integer> result(){
List<Integer> result = new ArrayList<Integer>();
result.add(1);
result.add(2);
return result;
}
}
現在,我想將URL“ / Index / Result”的JSON結果存儲到字符串中。 或者簡單地,在應用注釋后存儲控制器的JSON結果。 請注意,這不是出於此目的考慮的測試和網絡服務問題。 有什么想法嗎? 提前致謝。
您可以將Jackson的ObjectMapper注入到控制器中,以在通過ResponseEntity返回之前手動將結果序列化為JSON
。
@Configuration
public class Config {
@Bean
public ObjectMapper objectMapper() {
// returning a plain ObjectMapper,
// you can change this to configure the ObjectMapper as requiered
return new ObjectMapper();
}
}
@Controller
@RequestMapping("/Index")
public class ControllerClass {
@Autowired
private ObjectMapper objectMapper;
@RequestMapping(value="/Result",
method=RequestMethod.GET,
produces="application/json")
@ResponseBody
public ResponseEntity<String> result(){
List<Integer> result = new ArrayList<Integer>();
result.add(1);
result.add(2);
String jsonResult = objectMapper.writer().writeValueAsString(result);
// here you can store the json result before returning it;
return new ResponseEntity<String>(jsonResult, HttpStatus.OK);
}
}
編輯 :
您也可以嘗試定義HandlerInterceptor來捕獲您感興趣的請求的響應主體。
@Component
public class RestResponseInterceptor implements HandlerInterceptor {
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
// inspect response, etc...
}
}
我建議將傑克遜依賴項放入pom.xml中(如果尚未存在的話)。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.2.3</version>
</dependency>
您也可以像這樣更新您的請求映射
@RequestMapping(value = "/Result", produces = "application/json;charset=utf-8")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.