SpringMVC 태그 라이브러리를 사용하여 JSP로 온라인 양식을 만들었습니다. 내 양식 용 컨트롤러는 RESTful 웹 서비스입니다.SpringMVC 및 REST를 사용하여 양식을 제출할 때 오류 발생
(1) http://localhost:8080/myapp/applications/new
이 브라우저에서 온라인 양식을 (이 작품)를 표시합니다 :
평온한 웹 서비스는 두 통화가 있습니다.
(2) http://localhost:8080/myapp/applications/create
이 데이터베이스에 양식 데이터를 저장 (핸들 제출). 이것이 깨지는 곳입니다.
스프링 프레임 워크와 함께 제공되는 샘플 데모 petclinic 앱의 규칙을 따릅니다.
온라인 형태 :
<%@ 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>
폼 컨트롤러로 사용되는 RESTful 웹 서비스 :
내가 제출에 클릭 할 때 발생합니다@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;
@Autowired
private ProfileManager profileManager;
@POST
@Path("create")
@Produces(MediaType.TEXT_HTML)
public Model getNewApplication(@Context HttpServletRequest request,
@RequestAttribute Model model)
{
Application app = new Application();
model.addAttribute("application", app);
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());
}
return model;
}
@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;
}
}
예외 :
POST/응용 프로그램을 실행 실패/ org.jboss.resteasy.spi.BadRequestException :
을 작성하십시오.유형에 대한 메시지 본문 판독기를 찾을 수 없습니다 : 콘텐츠 형식의
인터페이스 org.springframework.ui.Model을 : 응용 프로그램/
조직에서 X-WWW-양식-urlencoded를. 나는이 exceptio을 받고있는 이유
이사람이 알고 있나요 jboss.resteasy.core.MessageBodyParameterInjector $ (1) createReaderNotFound (MessageBodyParameterInjector.java:73) 엔?
누군가가이 문제를 도와 줄 수 있다면 ...
해피 프로그래밍을 감사하고 이것을 읽을 시간을내어 주셔서 감사합니다 정말겠습니까.
는 수정 매개 변수 목록 내부의 @Form 응용 프로그램 응용 프로그램을 넣고 @FormParam ("이름")으로 도메인 모델 객체의 setter를 붙이는되었다 ... RESTEasy가 문제가되었다. –