settings.jsp 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  2. <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
  3. <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
  4. <%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
  5. <%@ taglib uri = "http://java.sun.com/jsp/jstl/functions" prefix = "fn" %>
  6. <%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
  7. <jsp:include page="/WEB-INF/jsp/include/head.jsp"></jsp:include>
  8. <script>
  9. let settingForm = null;
  10. const originalSetting = {};
  11. window.onload = () => {
  12. settingForm = window.document.querySelector('#setting-form');
  13. }
  14. const submitForm = () => {
  15. // 밸리데이션 하는 부분 필요
  16. const json = {};
  17. // 이름
  18. if (settingForm['username'].value !== "${user.username}") {
  19. json.username = settingForm['username'].value;
  20. }
  21. // 이메일
  22. if (settingForm['email'].value !== "${user.email}") {
  23. json.email = settingForm['email'].value;
  24. }
  25. // 비번
  26. if (settingForm['password'].value !== "") {
  27. json.password = settingForm['password'].value;
  28. }
  29. json.shortBio = settingForm['shortBio'].value;
  30. json.id = "${user.id}"
  31. const options = {
  32. body: JSON.stringify(json),
  33. method: 'PATCH',
  34. headers: {
  35. "Content-Type": "application/json"
  36. }
  37. };
  38. fetch("/user/settings/${user.id}", options)
  39. .then(response => {
  40. if (response.status === 200) {
  41. location.href = '/user/settings/${user.id}'
  42. }
  43. })
  44. }
  45. </script>
  46. </head>
  47. <body>
  48. <jsp:include page="/WEB-INF/jsp/include/header.jsp"></jsp:include>
  49. <div class="container main">
  50. <div class="row">
  51. <div class="col-6">
  52. <h1 class="sign-in-title">Your Settings</h1>
  53. <form
  54. name="settingForm"
  55. id="setting-form"
  56. class="form-group"
  57. onsubmit="return false"
  58. >
  59. <!-- method="post"
  60. action="/user/settings" -->
  61. <!-- <div class="form-data">
  62. <input
  63. type="file"
  64. class="form-control form-control-sm"
  65. placeholder ="URL of profile picture"
  66. autocomplete="off"
  67. value="${profileImg}">
  68. </div> -->
  69. <div class="form-data">
  70. <input
  71. type="text"
  72. class="form-control"
  73. placeholder ="Username"
  74. autocomplete="off"
  75. name="username"
  76. value="${user.username}">
  77. </div>
  78. <div class="form-data">
  79. <textarea
  80. class="form-control"
  81. rows="8"
  82. name="shortBio"
  83. placeholder="Short bio about you"
  84. >${user.shortBio}</textarea>
  85. </div>
  86. <div class="form-data">
  87. <input
  88. type="email"
  89. class="form-control"
  90. placeholder ="Email"
  91. autocomplete="off"
  92. name="email"
  93. value="${user.email}">
  94. </div>
  95. <div class="form-data">
  96. <input
  97. type="password"
  98. class="form-control"
  99. placeholder="New Password"
  100. name="password"
  101. autocomplete="off">
  102. </div>
  103. <button class="btn-settings" onclick="submitForm()">Update Settings</button>
  104. </div>
  105. <hr>
  106. <button type="button" class="btn-logout" onclick="location.href='/'">Or click here to logout.</button>
  107. </form>
  108. </div>
  109. </div>
  110. </body>
  111. </html>
  112. </body>