[jboss-user] [JBoss Web Services Users] - Getting error when submitting form using SpringMVC and REST

socal_javaguy do-not-reply at jboss.com
Thu Oct 15 22:28:18 EDT 2009


Hello there,

Created an online form in JSP using SpringMVC tag libraries. The controller for my form is a RESTful web service (JBoss RESTEasy). 

The RESTful web service has two calls:

(1) http://localhost:8080/myapp/applications/new

This brings up the online form in the browser (this works).

(2) http://localhost:8080/myapp/applications/create

This saves the form data to a database (handles submit). This is where it breaks.

Followed the conventions from the sample demo petclinic app which comes with the Spring Framework. 

Online form:


  | <%@ page contentType="text/html;charset=UTF-8" language="java"%>
  | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
  | <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
  | 
  | <html>
  | <body>
  | <form:form modelAttribute="application" method="POST" action="create">
  | 	<table>
  | 	<tr>
  | 	  <td>Name:</td>
  | 	  <td><form:input path="name" size="30" maxlength="80"/></td>
  | 	</tr>
  | 	<tr>
  | 	  <td>Description:</td>
  | 	  <td><form:input path="description" size="30" maxlength="80"/></td>
  | 	</tr>
  | 	<tr>
  | 	  <td>Image URL:</td>
  | 	  <td><form:input path="imgUrl" size="30" maxlength="80"/></td>
  | 	</tr>
  | 	</table>
  | 	<input type="submit" value="Save" />
  | </form:form>
  | </body>
  | </html>
  | 

The RESTful web service which serves as form controller:


  | @Controller
  | @Path(ApplicationsResource.APPLICATION_URL)
  | public class ApplicationsResource
  | {
  | 	private final Logger log = LoggerFactory.getLogger(ApplicationsResource.class);
  | 
  | 	public static final String APPLICATION_URL = "/applications";
  | 
  | 	@Autowired
  | 	private ApplicationManager applicationManager;
  | 
  | 	@POST
  | 	@Path("create")
  | 	@Produces(MediaType.TEXT_HTML)
  | 	@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
  | 	public void getNewApplication(@Context HttpServletRequest request, @ModelAttribute Application app)
  | 	{
  | 		log.info("ApplicationsResource - Inside getNewApplication() method.");
  | 		String contentType = request.getContentType();
  | 		log.info("Content-Type:" + contentType);
  | 		
  | 		try
  | 		{
  | 			if ("POST".equalsIgnoreCase(request.getMethod()))
  | 			{
  | 				if (app != null)
  | 				{
  | 					applicationManager.save(app);
  | 					log.info("Added application: " + app.getName());
  | 				}
  | 				else
  | 				{
  | 					log.info("Application not added");
  | 				}
  | 			}
  | 		}
  | 		catch (Exception e)
  | 		{
  | 			log.info("Exception: ", e);
  | 			throw new WebApplicationException(Response.status(RestError.SERVER_ERROR_HTTP_RESP).
  | type("application/json;charset=utf-8").
  | entity(new ErrorOutput(RestError.SERVER_ERROR_CODE, RestError.SERVER_ERROR_MSG, e.toString())).build());
  | 		}
  | 	}
  | 	
  | 	@InitBinder
  | 	public void setAllowedFields(WebDataBinder dataBinder)
  | 	{
  | 		dataBinder.setDisallowedFields(new String[] {"id"});
  | 	}
  | 
  | 	@GET
  | 	@Path("new")
  | 	@Produces( { MediaType.TEXT_HTML })
  | 	public ModelAndView getNewApplicationForm()
  | 	{
  | 		log.info("ApplicationsResource - Inside getNewApplicationForm");
  | 		ModelAndView mv = new ModelAndView("/applications/applications_new");
  | 		mv.addObject("application", new Application());
  | 		return mv;
  | 	}
  | }
  | 

Exception thrown when I click on submit:


  | Failed executing POST /applications/create
  | 
  | org.jboss.resteasy.spi.BadRequestException: 
  | 
  | Could not find message body reader for type: 
  | 
  | class com.myapp.domain.Application 
  | 
  | of content type: application/x-www-form-urlencoded
  | 	at org.jboss.resteasy.core.MessageBodyParameterInjector$1.createReaderNotFound(MessageBodyParameterInjector.java:73)
  | 	at org.jboss.resteasy.core.messagebody.ReaderUtility.doRead(ReaderUtility.java:105)
  | 	at org.jboss.resteasy.core.messagebody.ReaderUtility.doRead(ReaderUtility.java:93)
  | 	at org.jboss.resteasy.core.MessageBodyParameterInjector.inject(MessageBodyParameterInjector.java:120)
  | 	at org.jboss.resteasy.core.MethodInjectorImpl.injectArguments(MethodInjectorImpl.java:93)
  | 

Does anyone know why I am getting this exception?

Would really appreciate it if someone could help me with this issue...

Happy programming and thank you for taking the time to read this.

View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4260661#4260661

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4260661



More information about the jboss-user mailing list