Передача объекта массива Json в модель через контроллер [Spring Boot] - PullRequest
0 голосов
/ 31 января 2019

У меня уже есть вопрос, в этом вопросе я не получил должным образом.В этом вопросе я дам вам больше информации, чтобы дать правильный ответ. Невозможно привязать строку json к строке java

После того, как попробовал это решение, в классе модели,

public class CreateAds {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    // @JsonProperty
    private String brand;
    // @JsonProperty
    private ArrayList<String> models = new ArrayList<>();
    //other variable
    //all getters and setters
}

В моем контроллере

@PostMapping(value="/create/ads", consumes=MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces=MediaType.APPLICATION_JSON_UTF8_VALUE)
public String submitForm(@RequestBody CreateAds ads, BindingResult result, Model model) {
    if (result.hasErrors()) {
        return "test";
    }       
    System.out.println(ads.getBrand()+", "+ads.getModels());
    return "successful"; 
}

в методе контроллера, с ( потребляет и производит ) или без ( потребляет и производит ), получая эту ошибку

Тип содержимого 'application / x-www-form-urlencoded; charset = UTF-8' не поддерживается

В моей форме

<form id="myForm" th:action="@{/create/ads}" th:object="${createAds}" method="post">
     <p class="choose__input__single" ><span th:field="*{brand}" id="brands">Brand</span>
     </p>
     <ul class="dropList odaberiteMarku">
           <-- brand -->
     </ul>
     <p class="choose__input__single"><span th:field="*{model}" id="model">Model</span>

     </p>
     <ul class="dropList odaberiteModel">
           <-- models -->
     </ul>   
</form>


<script>
    $("#myForm").submit(function(e){
        var data = {};
        data['brand'] = $('[class="odaberiteMarku li label"]').val();
        data['models'] = $('[class="odaberiteModel li label"]').val();
        $.ajax({
            headers: {
                Accept: "application/json; charset=utf-8",
                "Content-Type": "application/json; charset=utf-8"
            },
            type: POST,
            url: /create/ads,
            data: JSON.stringify(data),
            contentType: "application/json; charset=utf-8",
            dataType: "json", 
            beforeSend: function(xhr) {

            }, 
            success: function(data){

            },
            return false;
        });
    }); 
</script>

выборка jsonAPI,

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      var response = JSON.parse(xhttp.responseText);
      var output = '';

      for(var i = 0; i < response.length; i++){
        output += `<li class="dropList__item">${response[i].brand}</li>`
      }
      // SELECT WHERE TO PUT BRAND

      var brand = document.querySelector('.odaberiteMarku');
      brand.innerHTML = output;
      // CHOOSE MODEL BASED ON BRAND

      var models = document.querySelectorAll('.odaberiteMarku li');
      models.forEach(model=> {
        model.addEventListener('click', function(e){
          e.preventDefault();
          var outputModel = '';
          function runOver(){
            let auto = model.textContent;

            let result = response.find(car => car.brand === auto);
            console.log(result.models);
            for(let i = 0; i < result.models.length; i++){
              outputModel +=  `<li class="dropList__item">${result.models[i]}</li>`;
            }

            return outputModel;
          }
          runOver();
          const whereToStore = document.querySelector('.odaberiteModel');

          whereToStore.innerHTML = outputModel;
        })
      })
    }
};
xhttp.open("GET", "/json/car-info.json", true);
xhttp.send();

и Я использую этот API .

В модельном классе у меня есть и другие поля, которые не являются полями JSON.Для этого Что я должен использовать в контроллере? @ RequestBody или @ ModelAttribute или оба ?

Обновление: После отладки времени входа в систему я обнаружил выбранное марки и модели перейдите к тегу [span] под тегом [p] .Теперь мне нужно отправить выбранные данные в модель.

Так как я могу отправить данные в модель?Заранее спасибо.

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