페이지 새로 고침이 필요하지 않은 방식으로 양식을 다시 작성하려고 합니다. 즉, 브라우저가 제출 시 GET/POST 요청을 수행하는 것을 원하지 않습니다. jQuery는 이 문제를 해결하는 데 도움이 될 것입니다. 여기 내 테이블이 있습니다(몇 개가 있습니다):
으아악이것은 내 JS입니다:
으아악이것은 내 REST 컨트롤러 핸들러입니다:
으아악User
엔터티:
角色
항목:
제출 버튼을 누르면 콘솔에 이 내용이 표시됩니다
으아악어떻게든 통과해야 할 것 같습니다 Collection
的 JSON 表示,而不仅仅是 String
。在我之前的项目中,没有使用 jQuery,String
已使用我的自定义 Formatter
성공적인 역직렬화
구글에서 찾아보니 Thymeleaf에는 toJson()
메소드가 없는 것 같습니다. 내 말은 나만의 메소드를 작성할 수 있지만 Thymeleaf 템플릿에서 이를 사용하는 방법을 모른다는 뜻입니다. 또한 이는 최적의 솔루션이 아닐 수도 있습니다
이것은 Boot 프로젝트이므로 Jackson 데이터 바인딩 라이브러리가 있습니다
내 양식의 컬렉션을 JS 이벤트 핸들러와 REST 컨트롤러로 올바르게 전달하려면 어떻게 해야 합니까?
StackOverflow에서 제안한 유사한 질문을 여러 개 확인했습니다. 관련성이 없어 보입니다(예: C# 또는 PHP와 같은 다른 프로그래밍 언어가 관련되어 있음)
UPD: 방금 이걸 시도해봤습니다. 불행히도 그것도 작동하지 않았습니다! (같은 오류 메시지)
으아악 으아악그러나 방법은 예상대로 작동합니다
으아악UPD2: GPT4가 이것을 추천합니다
으아악지금 정말 이상해요. 하지만 데이터베이스는 아직 변경되지 않았습니다! 이제 IDE 콘솔에는 오류가 없으며 PUT 요청에 대한 언급도 전혀 없습니다(이전 시도에도 있었습니다)! 또한 브라우저 로그에는 다음 메시지가 있습니다
으아악무슨 뜻인지 모르겠어요!
UPD3: GPT4는 똑똑합니다. 어쨌든 나보다 똑똑해. 이것은 절대적으로 사실입니다. UPD2에서 작동하지 않는 이유는 다음과 같은 내용을 무시했기 때문입니다.
권한 필드는 문자열이 아닌 개체의 배열으로 전송되어야 합니다.
이는 StringJoiner
접두사와 접미사에 중괄호가 아닌 대괄호를 사용해야 함을 의미합니다.
저도 이렇게 바꿨어요
으아악이렇게 (당장 안한 내가 바보였음)
으아악그리고 - 비올라 - 이제 구매 가능해요!
GPT4도 내가 사용한 걸 눈치챘어요
으아악대신
으아악저도 이 문제를 해결했습니다
Collection
이더라도). 따라서new StringJoiner(", ", "{", "}")
→new StringJoiner(", ", "[", "]")
p>用户名:$('input[name=username]').val()
→用户名:$(this).find('input[name=username]')。 val()
或更好用户名:$(this).find('[name=username]').val()
잠깐department
由요소 표현이므로
'input[name=department]'
→'select[name=department]'
或'[name=department]'