У меня есть форма, подобная следующей:
<form id="myForm">
<input th:field="*{name}"/>
<input th:field="*{id}"/>
<button type="button" id="cancelButton" onclick="processCancel()">Cancel</button>
</form>
метод JS, который передает сериализованную форму на веб-слой для сравнения с текущей записью базы данных
function processCancel() {
let data = $('#myForm').serialize();
$.ajax({
url: "compare",
data: data,
success: function (change) {
if (!change) {
$('#reload').click();
}},
async:false
});
}
и веб-контроллер, который сравнивает объекты
@GetMapping(value = "/compare", produces = "application/json; charset=UTF-8")
public @ResponseBody boolean compare(@ModelAttribute(name = "form") SomeObject form) {
SomeObject dbRecord = //get the record from the db
return !dbRecord.equals(form);
}
Некоторые записи базы данных имеют конечный пробел; например: name="someName "
. Проблема в том, что serialize()
, похоже, усекает конечные пробелы, поэтому, когда поле name
возвращает его на веб-слой, оно равно name="someName"
вместо name="someName "
, что вызывает любое сравнение между объектом из формы и записью базы данных. потерпеть неудачу.
Есть ли способ предотвратить усечение сериализацией завершающего пробела?