@RequestMapping(value = "/person", method = RequestMethod.POST) @ResponseBody public Person createPerson( @RequestParam(value = "firstname", required = true) String firstName, @RequestParam(value = "lastname", required = true) String lastName, @RequestParam(value = "email", required = true) String email, @RequestParam(value = "description", required = false) String description, @RequestParam(value = "street", required = false) String street, @RequestParam(value = "city", required = false) String city, @RequestParam(value = "state", required = false) String state, @RequestParam(value = "zip", required = false) String zip, @RequestParam(value = "orgId", required = false) Integer orgId) { if (firstName == "" || lastName == "" || email == "") { throw new InvalidParameterException(); } Person person = new Person(firstName, lastName, email); if (description != null) { person.setDescription(description); } if (orgId != null) { Organization org = new Organization(); org.setId(orgId); person.setOrg(org); } Address address = new Address(street, city, state, zip); person.setAddress(address); personService.save(person); return person; }