У меня уже есть вопрос, в этом вопросе я не получил должным образом.В этом вопросе я дам вам больше информации, чтобы дать правильный ответ. Невозможно привязать строку 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] .Теперь мне нужно отправить выбранные данные в модель.
Так как я могу отправить данные в модель?Заранее спасибо.