Add generic error handling to BasicErrorController
Since Spring supports gobal error handling through @ControllerAdvice, it is quite easy to set up more meta-data about an exception for the BasicErrorController. You need to be careful not to swallow Security exceptions, and probably others (optionally) so this feature needs a bit more work. See gh-538
This commit is contained in:
@@ -17,12 +17,17 @@
|
||||
package sample.actuator;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.hibernate.validator.constraints.NotBlank;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Description;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
@Controller
|
||||
@@ -32,16 +37,42 @@ public class SampleController {
|
||||
@Autowired
|
||||
private HelloWorldService helloWorldService;
|
||||
|
||||
@RequestMapping("/")
|
||||
@RequestMapping(value="/", method=RequestMethod.GET)
|
||||
@ResponseBody
|
||||
public Map<String, String> helloWorld() {
|
||||
public Map<String, String> hello() {
|
||||
return Collections.singletonMap("message",
|
||||
this.helloWorldService.getHelloMessage());
|
||||
}
|
||||
|
||||
@RequestMapping(value="/", method=RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public Map<String, Object> olleh(@Validated Message message) {
|
||||
Map<String, Object> model = new LinkedHashMap<String, Object>();
|
||||
model .put("message", message.getValue());
|
||||
model.put("title", "Hello Home");
|
||||
model.put("date", new Date());
|
||||
return model;
|
||||
}
|
||||
|
||||
@RequestMapping("/foo")
|
||||
@ResponseBody
|
||||
public String foo() {
|
||||
throw new IllegalArgumentException("Server error");
|
||||
}
|
||||
|
||||
protected static class Message {
|
||||
|
||||
@NotBlank(message="Message value cannot be empty")
|
||||
private String value;
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user