Как отправить ответ JSON с контроллера? - PullRequest
0 голосов
/ 18 октября 2019

enter image description here Я хочу передать логическое значение из моего контроллера в javascript с использованием json, но не могу найти способ, поскольку я новичок в Spring mvc.

При использовании сервлета мы написали:

response.getWriter().println(somevalue)

и somevalue можно получить с помощью ajax. Вот мой метод контроллера:

@RequestMapping(value = REGISTERACTION , method = RequestMethod.POST)
@ResponseBody
public boolean RegisterUser(@ModelAttribute("register") Register register,HttpServletRequest request, HttpServletResponse response)
{

    boolean Registrationsuccess = userService.RegisterUser(register);
    return Registrationsuccess;
}

Итак, здесь логическая переменная Registrationsuccess, которую я хочу отправить в файл js и получить его с помощью ajax.

И в моей функции javasciptкоторый вызывается с помощью события onsubmit ->

 function AccountExists()
 {
 $.ajax({
        type: 'POST',
        url: 'registerProcess',
        success: function(data){    
        let detail = JSON.parse(data);
            if( data == true)
                alert("Success");
            else
                alert("Not ");
        }
 });

}

Ошибка получения -

Целевой ресурс не имеет текущего представленияэто было бы приемлемо для пользовательского агента в соответствии с полями заголовка проактивного согласования, полученными в запросе, и сервер не желает предоставлять представление по умолчанию.

Ответы [ 3 ]

0 голосов
/ 18 октября 2019

Вам нужно использовать ResponseEntity и @RestController для ответа JSON.

Примечание: @RestController включает в себя обе аннотации @Controller и @ResponseBody.

Попробуйте с этим:

@RestController
@RequestMapping("controller")
public class Controller {

    @PostMapping("REGISTERACTION")
    public ResponseEntity<Boolean> RegisterUser(@ModelAttribute("register") Register register)
    {

       Boolean registrationSuccess = userService.RegisterUser(register);
       return new ResponseEntity<Boolean>(registrationSuccess , HttpStatus.OK);
    }

}
0 голосов
/ 18 октября 2019

Этого можно добиться, используя 2 подхода

Подход 1: Установите атрибут модели и используя язык выражений, который вы можете найти на jsp

model.addAttribute("test",true);

в Jsppage

${test}

Подход 2: Если вы отправляете ajax-запрос вместо ModelAndView, создайте объект, установите любой атрибут boolean и верните объект из метода @ResponseBody с аннотацией. получить JSON в Ajax Response

@RequestMapping(value = REGISTERACTION , method = RequestMethod.POST)
public @ResponseBody MyCustomObject RegisterUser(@ModelAttribute("register") Register register,HttpServletRequest request, HttpServletResponse response)
{

    boolean Registrationsuccess = userService.RegisterUser(register);
    MyCustomObject cusobj=new MyCustomObject();
    cusobj.setStatus(true);
    return cusobj;
}

Независимо от того, какой код вы написали, он не вернет JSON (это в основном подход к отправке форм), поэтому вам придется использовать первый подход.

0 голосов
/ 18 октября 2019

Попробуйте использовать аннотацию @ResponseBody в методе вашего контроллера. И измените тип возвращаемого значения метода на Boolean, а затем верните Registrationsuccess вместо ModelAndView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...