Hibernate как вернуть значение Json? - PullRequest
0 голосов
/ 17 января 2019

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

@Controller
public class timesheetController 
{
    @Autowired
    private CustomerDAO customerDAO;

    @GetMapping("/getCustomers")
    public String getCustomers(Model view)
    {
        //get customers from dao
        List<Customer> results = customerDAO.getCustomers(); 

        //add the customers to the model
        view.addAttribute("customers", results);

        return "list-customers";
    }   
}

Однако я хотел бы вернуть список в виде json, чтобы получить вывод типа

{
    "Customer_Code": T77A,
    "Customer_Name": CustomerName1
},
{
    "Customer_Code": T77B,
    "Customer_Name": CustomerName2
}

Я попытался просто вернуть список следующим образом

@Controller
public class timesheetController 
{
    @Autowired
    private CustomerDAO customerDAO;

    @GetMapping("/getCustomers")
    public List<Customer> getCustomers()
    {
        //get customers from dao
        List<Customer> results = customerDAO.getCustomers(); 

        return results;
    }   
}

, но затем я получаю эту ошибку, поскольку она, похоже, ожидает представления.Как я могу вернуть желаемый вывод JSON?enter image description here

1 Ответ

0 голосов
/ 17 января 2019

хорошо, вы пытаетесь вызвать getCustomers.jsp. Вместо этого вам нужна не страница JSP, а ответ JSON. Таким образом, вы должны сделать AJAX-вызов (используя JQuery или другой фреймворк или нативный JS) Поэтому я бы изменил ваш класс контроллера следующим образом:

@Controller
public class timesheetController 
{
    @Autowired
    private CustomerDAO customerDAO;

    @GetMapping("/getCustomers", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = {MediaType.APPLICATION_JSON_UTF8_VALUE })
    public ResponseEntity<List<Customer>> getCustomers()
    {
        List<Customer> payload = customerDAO.getCustomers(); 
        return ResponseEntity
        .ok()
        .contentType(MediaType.APPLICATION_JSON_UTF8)
        .body(payload);
    }   
}

Тогда я бы сделал вызов JSON (в этом примере я использую JQuery):

var baseUrl = YOUR_WEB_APP_CONTEXT/getCustomers;
$.ajax({
    type: "GET", 
    url: baseUrl,
    success: function(data) {
        //All OK.. you should have the JSON response
    },
    error: function() {
        //Something was wrong; you chould check
    }               
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...