Я знаю, что уже есть много вопросов об этом сообщении об ошибке, но ничто не помогло мне решить мою проблему.
Я пытаюсь активировать учетную запись пользователя через таблицу, в которой сначала содержится электронная почта, и фамилия и флажок для каждой записи. Сначала вы устанавливаете флажки для тех пользователей, которых хотите разблокировать, а затем нажимаете кнопку для отправки вашего запроса. Затем контроллер просто меняет статус «активирован» для выбранного пользователя (ей) с 0 для деактивированного на 1 для активированного.
У меня есть файл контроллера HTML, JavaScript и Java. Обратите внимание, что в настоящее время я пытаюсь сделать это на локальном хосте и включил перекрестное происхождение хромов Google, запустив Chrome на cmd с chrome .exe --disable-web-security --allow-file-access-from -files
Я хочу разблокировать пользователя по его адресу электронной почты в MainController. java, который в настоящее время только выполняет sysout, потому что до сих пор я даже не дошел до этого метода из-за ошибки .
Я уже пытался изменить @RequestParam на @RequestBody, но он просто выдает ошибку. Обязательное тело запроса отсутствует.
Итак, я понимаю, что основная проблема заключается в том, что адрес электронной почты получение из таблицы не передается контроллеру, но как мне сделать это правильно?
как выглядит таблица: снимок экрана с таблицей
разблокировка . html
<div id="background">
<div id="scroll-horizontal">
<form id="table-form" method="POST" action="http://localhost:8080/mitglied/unlockUpdate">
<table id="table">
<tr>
<th>E-Mail</th>
<th>Vorname</th>
<th>Nachname</th>
<th><input id="unlock-all" type="checkbox"></th>
</tr>
</table>
<input id="unlock-btn" type="submit" value="Freischalten"></input>
</form>
</div>
</div>
<script src="../static/js/unlock.js "></script>
JavaScript файл разблокировки. js
jQuery(document).ready(function() {
$.getJSON("http://localhost:8080/mitglied/unlock", function(data) {
var table_data = "";
$.each(data, function(key, value) {
table_data += "<tr>";
table_data += "<td>" + value.email + "</td>";
table_data += "<td>" + value.vorname + "</td>";
table_data += "<td>" + value.nachname + "</td>";
table_data += "<td class=" + "unlock-checkbox" + " style=" + "text-align:center" + "><input type=" + "checkbox" + "></input></td>";
table_data += "</tr>";
});
$("#table").append(table_data);
});
jQuery('#table-form').submit(function() {
var rows = document.getElementsByTagName("tr");
for (var i = 1; i < rows.length; i++) {
var cols = rows[i].getElementsByTagName("td");
var checkbox = cols[3].getElementsByTagName("input")[0];
if (checkbox.checked) {
var email = cols[0].innerHTML;
$.ajax({
url: $(this).attr('action'),
method: 'POST',
data: { email: email },
success: function(data) {
console.log("success, email: " + email);
alert("success");
},
error: function() {
alert("error");
}
});
}
console.log(checkbox.checked);
}
});
});
и MainController. java
@Controller
@RequestMapping(path="/mitglied") public class MainController {
@Autowired
private MitgliederRepository mitgliedRepository;
@PostMapping(path="/unlockUpdate")
public @ResponseBody void unlockSelectedUsers(@RequestParam String email) {
System.out.println(email);
}
полный сообщение об ошибке (на локальном хосте: 8080 / mitglied / unlockUpdates):
* 10 29 * Whitelabel Error Page Это приложение не имеет явного сопоставления для / error, поэтому вы видите это как запасной вариант.
Пт. 10 апреля 13:43:42 CEST 2020 Произошла непредвиденная ошибка (тип = Bad Request , статус = 400). Обязательный параметр String 'email' отсутствует