Не удалось получить ошибку с помощью запроса PUT, метод MyBatis Mapper не выполняется должным образом.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Не удалось получить ошибку с помощью запроса PUT, метод MyBatis Mapper не выполняется должным образом.

Сообщение Anonymous »

Вопрос:
Я столкнулся с проблемой, когда запрос PUT завершается с ошибкой «Не удалось получить данные», а соответствующий метод MyBatis Mapper не выполняется должным образом. Вот описание проблемы и то, что я пробовал на данный момент:
Описание проблемы
Когда я пытаюсь обновить профиль пользователя с помощью PUT запрос, сервер получает запрос, но он остается в состоянии ожидания на неопределенный срок. Журналы сервера показывают, что метод, обрабатывающий запрос, вызывается, но метод MyBatis Mapper, похоже, не выполняется должным образом. База данных не обновляется, и сообщения об ошибках не регистрируются.
Фрагменты кода

Код JavaScript:

Код: Выделить всё

document.addEventListener('DOMContentLoaded', function () {
const csrfToken = document.querySelector('meta[name="_csrf"]').getAttribute('content');
const csrfHeader = 'X-CSRF-TOKEN';

const pfpContainer = document.getElementsByClassName("pfp-container")[0];
const soloProfilePicture = document.getElementById("solo-pfp");
const pfpInput = document.getElementById("solo-pfp-file-input");
const saveBtn = document.getElementById("save-profile-update-btn");

pfpContainer.addEventListener("click", function () {
pfpInput.click();
});

pfpInput.addEventListener("change", function (changeEvent) {
const file = changeEvent.target.files[0];
if (file) {
const reader = new FileReader();
reader.onload = function (loadEvent) {
soloProfilePicture.src = loadEvent.target.result;
};
reader.readAsDataURL(file);
}
});

saveBtn.onclick = function (event) {
console.log("click");
const data = {
profileImageUrl: document.getElementById("solo-pfp").src,
email: document.getElementById("email").innerText
};

fetch('/api/user/solo/update-profile', {
method: 'PUT',
headers: {
[csrfHeader]: csrfToken,
'Content-Type': 'application/json; charset=utf-8'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(resp => {
alert("User Info Edit complete");
window.location.href = "/";
})
.catch(error => {
alert(JSON.stringify(error));
});
});
});

Код контроллера загрузки Spring:

Код: Выделить всё

@PutMapping({"/solo/update-profile"})
public ResponseEntity updateProfileProcess(@RequestBody UserResponseDTO user,
HttpSession session) {
log.info("UserResponseDTO 생성 성공");
log.info("1. updateProfileProcess 호출됨");
log.info("2. Received user data: {}", user);
try {
userService.updateProfileImageUrl(user);
log.info("3. updateProfileImageUrl 호출됨");
} catch (Exception e) {
log.error("Error updating profile image URL: ", e);
return ResponseEntity.badRequest().body("Error updating profile: " + e.getMessage());
}

Authentication auth = SecurityContextHolder.getContext().getAuthentication();
log.info("4. Authentication 객체 생성됨");
if (auth != null && auth.isAuthenticated()) {
log.info("5. 세션이 NULL이 아니고 로그인이 되어있음");
session.setAttribute("profileImageUrl", user.getProfileImageUrl());
log.info("6.  세션에 정보 삽입함");
}
return ResponseEntity.ok()
.body(Map.of("message", "Profile updated successfully", "redirectUrl", "/user/solo/"));
}

XML-код MyBatis Mapper:

Код: Выделить всё



















SELECT u.email, u.user_name, birthday, gender, password, profile_image_url, auth, couple_id
FROM users u
JOIN user_auth auth ON u.email = auth.user_email
WHERE u.email = #{email}



INSERT INTO users (email, user_name, birthday, gender, password, created_at)
VALUES (#{email}, #{userName}, #{birthday}, #{gender}, #{password}, sysdate)



INSERT INTO user_auth (auth_no, user_email, auth)
VALUES (user_auth_seq.nextval, #{userEmail}, #{auth})



UPDATE users
SET profile_image_url = #{profileImageUrl}
WHERE email = #{email}


Предпринятые действия по устранению неполадок
  • Журналы сервера: проверил журналы сервера, но не обнаружил каких-либо конкретных ошибок или предупреждения, связанные с обработкой запроса.
  • JavaScript Fetch API: проверено, что запрос на получение правильно настроен с правильным токеном CSRF и заголовками.< /p>
  • Сетевая активность: отслеживалась сетевая активность и подтверждено, что запрос отправлен, но остается в состоянии ожидания.
    < /li>
    Проверка базы данных: убедитесь, что соединение с базой данных и запрос updateProfileImageUrl настроены правильно.
Вопросы
  • Почему запрос PUT может оставаться в состоянии ожидания и не завершен?
  • Что может быть причиной того, что метод MyBatis Mapper не выполняет или не обновляет базу данных?
  • Есть ли какие-либо распространенные проблемы или неправильные настройки в предоставленных фрагментах кода, которые могут привести к этой проблеме?
Буду признателен за любые рекомендации и предложения по решению этой проблемы. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/790 ... uting-prop
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»