Я хочу опубликовать ArrayList, но возвращаю нулевое значение

#spring-boot

#весенняя загрузка

Вопрос:

ПОЧТАЛЬОН :

 {
    "childDTO":[{
            "age":"80",
        "gender":"kavi",
        "occupation":"main",
        "type":"mainlife"
    },  
    {       "age":"80",
        "gender":"kavi",
        "occupation":"main",
        "type":"mainlife"
    }
    ]
}
  

Контроллер…..

 @PostMapping("/child")
public List<CustomerDTO> childDTO(@RequestBody CustomerDTO cus){

return calculationService.childDTO(cus.getAge(),cus.getGender(),cus.getOccupation(),cus.getType());
}
  

Обслуживание……

 public List<CustomerDTO> childDTO(String age, String gender, String occupation, String type);
  

Реализация сервиса……

@Override

 public List<CustomerDTO> childDTO(String age, String gender, String occupation, String type) {

    List<CustomerDTO> typeChild = new ArrayList<>();
    if (type==children) {
        for (CustomerDTO customer1 : typeChild) {
            customer1.setAge(age);
            customer1.setGender(gender);
            customer1.setOccupation(occupation);
            customer1.setType(type);
            customer1.setBenifits(benifitDTO(beni.getRiders(), beni.getSumAssuarance()));
            System.out.println("list:-" customer1);
            typeChild.add(customer1);

        }
    }
    System.out.println("list:-" typeChild);
    return typeChild;
}
  

Комментарии:

1. Не могли бы вы, пожалуйста, опубликовать код CustomerDTO ? и какое значение будут иметь дочерние элементы!

2. возраст частной строки; пол частной строки; занятие частной строки; тип частной строки; частные преимущества, которые нужно использовать;

3. Поэтому я думаю, что ваш запрос post никогда не будет получен, поскольку вы передаете данные массива и в @RequestBody вы пытаетесь получить данные в одном объекте!

4. контроллер:-CustomerDTO [возраст =null, пол = null, профессия = null, тип = null, преимущества = null]

5. данные запроса post не назначаются в контроллере

Ответ №1:

Вы не опубликовали, что это за переменная children , возможно, какое-то поле класса, но вы не можете сравнивать строки Java с == . Строки Java должны сравниваться с .equals :

 ...
if (type.equals(children)) {
...
  

В следующий раз используйте отладчик, чтобы посмотреть, что происходит в вашем коде.

Ответ №2:

Ваш запрос и структура RequestBody контроллера не совпадают. Вам нужно использовать List.

 @PostMapping("/child")
public List<CustomerDTO> childDTO(@RequestBody List<CustomerDTO> cusList){ // here list needs to be used
    if(cusList != null amp;amp; !cusList.isEmpty()) {
        CustomerDTO cus = cusList.get(0); // it will get first element from the list, if you want to process all the elements then you need to iterate the list
        return calculationService.childDTO(cus.getAge(),cus.getGender(),cus.getOccupation(),cus.getType());
    }
}
  

Теперь будет другая логика, или вы можете изменить ее в соответствии с вашими требованиями.