Jestem nowy w koncepcji REST SpringMVC. Potrzebujesz pomocy ekspertów tutaj, aby zrozumieć/rozwiązać następujący problem, Opracowałem aplikację SpringMVC, która jest częścią kodu klasy kontrolera i działa poprawnie w taki sposób, w jaki jest, co oznacza, że działa poprawnie z typem JSON obiekt,RequestBody aplikacji REST
@RequestMapping(method = RequestMethod.POST, value = "/user/register")
public ModelAndView addUser(@RequestBody String payload) {
try{
ObjectMapper mapper = new ObjectMapper();
CreateNewUserRequest request = mapper.readValue(payload, CreateNewUserRequest.class);
UserBusiness userBusiness = UserBusinessImpl.getInstance();
CreateNewUserResponse response = userBusiness.createNewUser(request);
return new ModelAndView(ControllerConstant.JASON_VIEW_RESOLVER, "RESPONSE", response);
i to jest mój odpoczynek-servlet.xml wygląda
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<bean id="jsonViewResolver" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
<bean id="viewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver" />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jsonConverter" />
</list>
</property>
</bean>
<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes" value="application/json" />
</bean>
<bean name="UserController" class="com.tap.mvp.controller.UserController"/>
moim problemem jest to, jak mogę zrobić to praca dla zwykłego żądania POST, mój kontroler nie powinien przyjmować typu obiekt JSON zamiast Powinien działać w przypadku normalnych zmiennych HTTP POST. Jak uzyskać wartości z żądania? Jakie modyfikacje należy wymagać do tego celu. muszę się pozbyć
ObjectMapper mapper = new ObjectMapper();
CreateNewUserRequest request = mapper.readValue(payload, CreateNewUserRequest.class);
a zamiast tego trzeba dodać drogę do utworzenia instancji
CreateNewUserRequest
klasy, wywołując jego konstruktor. W tym celu muszę uzyskać wartości z żądania. Jak mogę to zrobić? Czy mogę traktować @RequestBody String ładunek jako mapę i uzyskać wartości? lub czy istnieje określony sposób uzyskania wartości z żądania metody HTTP POST? Następujące wartości będzie w żądaniu,
imię, nazwisko, e-mail, hasło
Dzięki Tomaz, to naprawdę pomogło, jednak mały błąd ten '@RequestParam ("formParam1") formParam1: String' jako '@RequestParam ("formParam1") String formParam1' – bluelabel
@bluelabel : Dzięki, naprawione. Za dużo Scali :-). BTW możesz edytować (powyżej pewnego poziomu reputacji) każde pytanie i odpowiedź tutaj, jak na wiki. Możesz poprawić błędy! –