Spring MVC Example

Spring MVC Example Git Source Tree

Root/src/main/java/info/ahlberg/spring/controller/ContactController.java

1package info.ahlberg.spring.controller;
2
3import info.ahlberg.spring.domain.Contact;
4import info.ahlberg.spring.service.ContactService;
5
6import java.beans.PropertyEditorSupport;
7import java.util.List;
8
9import org.springframework.beans.factory.annotation.Autowired;
10import org.springframework.stereotype.Controller;
11import org.springframework.ui.Model;
12import org.springframework.web.bind.WebDataBinder;
13import org.springframework.web.bind.annotation.InitBinder;
14import org.springframework.web.bind.annotation.PathVariable;
15import org.springframework.web.bind.annotation.RequestMapping;
16import org.springframework.web.bind.annotation.RequestMethod;
17import org.springframework.web.bind.annotation.RequestParam;
18import org.springframework.web.bind.annotation.ResponseBody;
19
20@Controller
21@RequestMapping("/")
22public class ContactController {
23    @Autowired
24    private ContactService contactService;
25
26    @InitBinder
27    public void initBinder(WebDataBinder binder) {
28        binder.registerCustomEditor(Contact.class, new PropertyEditorSupport() {
29            @Override
30            public void setAsText(String text) throws IllegalArgumentException {
31                Long id = Long.parseLong(text);
32                setValue(contactService.findById(id));
33            }
34        });
35    }
36    
37    @RequestMapping("/")
38    String index(Model model) {
39        model.addAttribute("contacts", contactService.findAll());
40
41        return "index";
42    }
43
44    @RequestMapping("/contacts")
45    public @ResponseBody List<Contact> contacts(Model model) {
46        return contactService.findAll();
47    }
48
49    @RequestMapping(value="/add", method = RequestMethod.GET)
50    public String addContact(Model model) {
51        model.addAttribute("contact", new Contact());
52
53        return "contact";
54    }
55
56    @RequestMapping(value="/contact/{contact}", method = RequestMethod.GET)
57    public String showContact(@PathVariable("contact") Contact contact, Model model) {
58        model.addAttribute("contact", contact);
59        
60        return "contact";
61    }
62    
63    @RequestMapping(value="/contact/{contact}", method = RequestMethod.POST)
64    public String updateContact(@PathVariable("contact") Contact originalContact, Contact contact, Model model) {
65        originalContact.setFirstName(contact.getFirstName());
66        originalContact.setLastName(contact.getLastName());
67        
68        model.addAttribute("contact", originalContact);
69
70        contactService.update(originalContact);
71        
72        return "contact";
73    }
74    
75    @RequestMapping(value="/add", method = RequestMethod.POST)
76    public String add(@RequestParam String firstName, @RequestParam String lastName, Model model) {
77        Contact contact = new Contact();
78        contact.setFirstName(firstName);
79        contact.setLastName(lastName);
80        contactService.save(contact);
81
82        model.addAttribute("msg", "Contact added");
83
84        model.addAttribute("contacts", contactService.findAll());
85
86        return "index";
87    }
88}
89

Archive Download this file

Branches