개인정보 수정 페이지 양식 변경.
parent
1a995eb75b
commit
36af4dae92
|
|
@ -30,15 +30,7 @@ public class MyInfoController {
|
|||
public ModelAndView myInfoPage(@AuthenticationPrincipal UserInfo loginUser, String activeTab){
|
||||
ModelAndView mav = new ModelAndView("user/myInfo");
|
||||
mav.addObject("userInfo", userInfoService.selectUserInfo(loginUser.getUserSeq()));
|
||||
mav.addObject("ogList", codeMgtService.selectCodeMgtList("OG"));
|
||||
mav.addObject("ofcList", codeMgtService.selectCodeMgtList("OFC"));
|
||||
mav.addObject("titleList", codeMgtService.selectCodeMgtList("JT"));
|
||||
mav.addObject("outturnList", codeMgtService.selectCodeMgtList("OTC"));
|
||||
mav.addObject("seriesList", codeMgtService.selectCodeMgtList("SRC"));
|
||||
mav.addObject("languageList", codeMgtService.selectCodeMgtList("LNG"));
|
||||
mav.addObject("statusList", codeMgtService.selectCodeMgtList("USC"));
|
||||
mav.addObject("activeTab", activeTab);
|
||||
|
||||
mav.addObject("dashboardConfigList", userInfoService.getDashboardConfigList(loginUser.getUserSeq()));
|
||||
return mav;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import com.dbnt.faisp.main.userInfo.model.*;
|
|||
import com.dbnt.faisp.main.userInfo.repository.*;
|
||||
import com.dbnt.faisp.util.ParamMap;
|
||||
|
||||
import com.dbnt.faisp.util.Utils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import org.springframework.beans.BeanUtils;
|
||||
|
|
@ -51,69 +52,84 @@ public class UserInfoService implements UserDetailsService {
|
|||
public void updateUserInfo(UserInfo loginUser,UserInfo userInfo){
|
||||
UserInfo savedInfo = userInfoRepository.findById(userInfo.getUserSeq()).orElse(null);
|
||||
if(savedInfo!=null){
|
||||
if(!ObjectUtils.isEmpty(userInfo.getDicCode())){
|
||||
if(!Utils.isEmpty(userInfo.getDicCode())){
|
||||
savedInfo.setDicCode(userInfo.getDicCode());
|
||||
}
|
||||
if(!ObjectUtils.isEmpty(userInfo.getUserNm())){
|
||||
if(!Utils.isEmpty(userInfo.getUserNm())){
|
||||
savedInfo.setUserNm(userInfo.getUserNm());
|
||||
}
|
||||
if(!ObjectUtils.isEmpty(userInfo.getPassword())){
|
||||
if(!Utils.isEmpty(userInfo.getPassword())){
|
||||
savedInfo.setPassword(convertPassword(userInfo.getPassword()));
|
||||
}
|
||||
if(!ObjectUtils.isEmpty(userInfo.getPhoneNo())){
|
||||
if(!Utils.isEmpty(userInfo.getPhoneNo())){
|
||||
savedInfo.setPhoneNo(userInfo.getPhoneNo());
|
||||
}
|
||||
if(!ObjectUtils.isEmpty(userInfo.getEmail())){
|
||||
if(!Utils.isEmpty(userInfo.getEmail())){
|
||||
savedInfo.setEmail(userInfo.getEmail());
|
||||
}
|
||||
if(!ObjectUtils.isEmpty(userInfo.getSex())){
|
||||
if(!Utils.isEmpty(userInfo.getSex())){
|
||||
savedInfo.setSex(userInfo.getSex());
|
||||
}
|
||||
if(!ObjectUtils.isEmpty(userInfo.getOgCd())){
|
||||
if(!Utils.isEmpty(userInfo.getOgCd())){
|
||||
savedInfo.setOgCd(userInfo.getOgCd());
|
||||
}
|
||||
if(!ObjectUtils.isEmpty(userInfo.getOfcCd())){
|
||||
if(!Utils.isEmpty(userInfo.getOfcCd())){
|
||||
savedInfo.setOfcCd(userInfo.getOfcCd());
|
||||
}
|
||||
if(!ObjectUtils.isEmpty(userInfo.getTitleCd())){
|
||||
if(!Utils.isEmpty(userInfo.getTitleCd())){
|
||||
savedInfo.setTitleCd(userInfo.getTitleCd());
|
||||
}
|
||||
if(!ObjectUtils.isEmpty(userInfo.getOutturnCd())){
|
||||
if(!Utils.isEmpty(userInfo.getOutturnCd())){
|
||||
savedInfo.setOutturnCd(userInfo.getOutturnCd());
|
||||
}
|
||||
if(!ObjectUtils.isEmpty(userInfo.getSeriesCd())){
|
||||
if(!Utils.isEmpty(userInfo.getSeriesCd())){
|
||||
savedInfo.setSeriesCd(userInfo.getSeriesCd());
|
||||
}
|
||||
if(!ObjectUtils.isEmpty(userInfo.getBirthDate())){
|
||||
if(!Utils.isEmpty(userInfo.getBirthDate())){
|
||||
savedInfo.setBirthDate(userInfo.getBirthDate());
|
||||
}
|
||||
if(!ObjectUtils.isEmpty(userInfo.getPoliceInDate())){
|
||||
if(!Utils.isEmpty(userInfo.getPoliceInDate())){
|
||||
savedInfo.setPoliceInDate(userInfo.getPoliceInDate());
|
||||
}
|
||||
if(!ObjectUtils.isEmpty(userInfo.getOrganInDate())){
|
||||
if(!Utils.isEmpty(userInfo.getOrganInDate())){
|
||||
savedInfo.setOrganInDate(userInfo.getOrganInDate());
|
||||
}
|
||||
if(!ObjectUtils.isEmpty(userInfo.getOfcInDate())){
|
||||
if(!Utils.isEmpty(userInfo.getOfcInDate())){
|
||||
savedInfo.setOfcInDate(userInfo.getOfcInDate());
|
||||
}
|
||||
if(!ObjectUtils.isEmpty(userInfo.getTitleInDate())){
|
||||
if(!Utils.isEmpty(userInfo.getTitleInDate())){
|
||||
savedInfo.setTitleInDate(userInfo.getTitleInDate());
|
||||
}
|
||||
if(!ObjectUtils.isEmpty(userInfo.getLanguageCd())){
|
||||
if(!Utils.isEmpty(userInfo.getLanguageCd())){
|
||||
savedInfo.setLanguageCd(userInfo.getLanguageCd());
|
||||
}
|
||||
if(!ObjectUtils.isEmpty(userInfo.getOfcHeadYn())){
|
||||
if(!Utils.isEmpty(userInfo.getOfcHeadYn())){
|
||||
savedInfo.setOfcHeadYn(userInfo.getOfcHeadYn());
|
||||
}
|
||||
if(!ObjectUtils.isEmpty(userInfo.getUserRole())){
|
||||
if(!Utils.isEmpty(userInfo.getUserRole())){
|
||||
savedInfo.setUserRole(userInfo.getUserRole());
|
||||
}
|
||||
if(!ObjectUtils.isEmpty(userInfo.getUserStatus())){
|
||||
if(!Utils.isEmpty(userInfo.getUserStatus())){
|
||||
savedInfo.setUserStatus(userInfo.getUserStatus());
|
||||
}
|
||||
if(!ObjectUtils.isEmpty(userInfo.getDutyCd())){
|
||||
if(!Utils.isEmpty(userInfo.getDutyCd())){
|
||||
savedInfo.setDutyCd(userInfo.getDutyCd());
|
||||
}
|
||||
if(!Utils.isEmpty(userInfo.getUseLanguage())){
|
||||
savedInfo.setUseLanguage(userInfo.getUseLanguage());
|
||||
}
|
||||
if(!Utils.isEmpty(userInfo.getLanguageGrd())){
|
||||
savedInfo.setLanguageGrd(userInfo.getLanguageGrd());
|
||||
}
|
||||
if(!Utils.isEmpty(userInfo.getEducationGrd())){
|
||||
savedInfo.setEducationGrd(userInfo.getEducationGrd());
|
||||
}
|
||||
if(!Utils.isEmpty(userInfo.getSchool())){
|
||||
savedInfo.setSchool(userInfo.getSchool());
|
||||
}
|
||||
if(!Utils.isEmpty(userInfo.getSpecialism())){
|
||||
savedInfo.setSpecialism(userInfo.getSpecialism());
|
||||
}
|
||||
userInfoRepository.save(savedInfo);
|
||||
saveUserInfoHistory(savedInfo, loginUser);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,9 @@ $(function (){
|
|||
})
|
||||
$(document).on('click', '#updateBtn', function (){
|
||||
if(confirm("저장하시겠습니까?")){
|
||||
const formData = new FormData($("#userInfoUpdate")[0]);
|
||||
const form = $("#userInfoUpdate");
|
||||
form.find('input, select').removeAttr('disabled');
|
||||
const formData = new FormData(form[0]);
|
||||
let flag = true
|
||||
const passwordChange = $("#passwordChange");
|
||||
if(passwordChange.val()){
|
||||
|
|
|
|||
|
|
@ -36,10 +36,12 @@
|
|||
<form id="userInfoUpdate" action="#" method="post">
|
||||
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
||||
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
||||
<div class="mb-3 mt-3 row">
|
||||
<div class="mb-1 mt-3 row">
|
||||
<label for="dicCode" class="col-sm-2 col-form-label col-form-label-sm text-center ">디지털식별코드</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm" id="dicCode" name="dicCode" autocomplete="off" th:value="${userInfo.dicCode}">
|
||||
<div class="col-sm-2">
|
||||
<input type="text" class="form-control form-control-sm" id="dicCode" name="dicCode" autocomplete="off" th:value="${userInfo.dicCode}" th:disabled="${!#strings.isEmpty(userInfo.dicCode)}">
|
||||
</div>
|
||||
<div class="col-sm-2">
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="row justify-content-end">
|
||||
|
|
@ -55,115 +57,111 @@
|
|||
</div>
|
||||
<div class="row mb-1">
|
||||
<label for="userId" class="col-sm-2 col-form-label col-form-label-sm text-center ">아이디</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm" id="userId" name="userId" autocomplete="off" th:value="${userInfo.userId}" readonly>
|
||||
<label for="userId" style="font-size: 12px">아이디는 수정할 수 없습니다.</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="text" class="form-control form-control-sm" id="userId" name="userId" autocomplete="off" th:value="${userInfo.userId}" th:disabled="${!#strings.isEmpty(userInfo.dicCode)}">
|
||||
</div>
|
||||
<label for="userNm" class="col-sm-2 col-form-label col-form-label-sm text-center">이름</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class=" form-control form-control-sm" id="userNm" name="userNm" autocomplete="off" th:value="${userInfo.userNm}">
|
||||
<div class="col-sm-2">
|
||||
<input type="text" class=" form-control form-control-sm" id="userNm" name="userNm" autocomplete="off" th:value="${userInfo.userNm}" th:disabled="${!#strings.isEmpty(userInfo.dicCode)}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label for="modalPassword" class="col-sm-2 col-form-label col-form-label-sm text-center">비밀번호</label>
|
||||
<div class="col-sm-4">
|
||||
<label for="passwordChange" class="col-sm-2 col-form-label col-form-label-sm text-center">비밀번호</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="password" class="form-control form-control-sm" id="passwordChange" name="passwordChange" autocomplete="new-password">
|
||||
<label for="userId" style="font-size: 12px">8~16자 사이의 알파벳, 숫자, 특수문자 조합</label>
|
||||
</div>
|
||||
<label for="passwordConfirm" class="col-sm-2 col-form-label col-form-label-sm text-center">비밀번호 확인</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="col-sm-2">
|
||||
<input type="password" class="form-control form-control-sm" id="passwordConfirm">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label for="phoneNo" class="col-sm-2 col-form-label col-form-label-sm text-center">휴대전화</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="tel" class="form-control form-control-sm" id="phoneNo" name="phoneNo" th:value="${userInfo.phoneNo}">
|
||||
</div>
|
||||
<label for="email" class="col-sm-2 col-form-label col-form-label-sm text-center">이메일</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="email" class="form-control form-control-sm" id="email" name="email" th:value="${userInfo.email}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label for="sex" class="col-sm-2 col-form-label col-form-label-sm text-center">성별</label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-select form-select-sm" id="sex" name="sex">
|
||||
<div class="col-sm-2">
|
||||
<select class="form-select form-select-sm" id="sex" name="sex" th:disabled="${!#strings.isEmpty(userInfo.dicCode)}">
|
||||
<option value="SEX002" th:selected="${userInfo.sex eq 'SEX002'}">남</option>
|
||||
<option value="SEX001" th:selected="${userInfo.sex eq 'SEX001'}">여</option>
|
||||
</select>
|
||||
</div>
|
||||
<label for="phoneNo" class="col-sm-2 col-form-label col-form-label-sm text-center">휴대전화</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="tel" class="form-control form-control-sm" id="phoneNo" name="phoneNo" th:value="${userInfo.phoneNo}">
|
||||
</div>
|
||||
<label for="email" class="col-sm-2 col-form-label col-form-label-sm text-center">이메일</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="email" class="form-control form-control-sm" id="email" name="email" th:value="${userInfo.email}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label for="birthDate" class="col-sm-2 col-form-label col-form-label-sm text-center">생년월일</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="birthDate" name="birthDate" th:value="${userInfo.birthDate}" readonly>
|
||||
<div class="col-sm-2">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="birthDate" name="birthDate" th:value="${userInfo.birthDate}" th:disabled="${!#strings.isEmpty(userInfo.dicCode)}">
|
||||
</div>
|
||||
<label for="policeInDate" class="col-sm-2 col-form-label col-form-label-sm text-center">해양경찰배명일</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="policeInDate" name="policeInDate" th:value="${userInfo.policeInDate}" readonly>
|
||||
<div class="col-sm-2">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="policeInDate" name="policeInDate" th:value="${userInfo.policeInDate}" th:disabled="${!#strings.isEmpty(userInfo.dicCode)}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label for="ogCd" class="col-sm-2 col-form-label col-form-label-sm text-center">관서</label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-select form-select-sm" id="ogCd" name="ogCd">
|
||||
<div class="col-sm-2">
|
||||
<select class="form-select form-select-sm" id="ogCd" name="ogCd" th:disabled="${!#strings.isEmpty(userInfo.dicCode)}">
|
||||
<option value="">--선택--</option>
|
||||
<th:block th:each="code:${ogList}">
|
||||
<th:block th:each="code:${session.commonCode.get('OG')}">
|
||||
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq userInfo.ogCd}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<label for="organInDate" class="col-sm-2 col-form-label col-form-label-sm text-center">현관서전입일</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="col-sm-2">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="organInDate" name="organInDate" th:value="${userInfo.organInDate}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label for="ofcCd" class="col-sm-2 col-form-label col-form-label-sm text-center">부서</label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-select form-select-sm" id="ofcCd" name="ofcCd">
|
||||
<div class="col-sm-2">
|
||||
<select class="form-select form-select-sm" id="ofcCd" name="ofcCd" th:disabled="${!#strings.isEmpty(userInfo.dicCode)}">
|
||||
<option value="">--선택--</option>
|
||||
<th:block th:each="code:${ofcList}">
|
||||
<th:block th:each="code:${session.commonCode.get('OFC')}">
|
||||
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq userInfo.ofcCd}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<label for="ofcInDate" class="col-sm-2 col-form-label col-form-label-sm text-center">현부서임용일</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="ofcInDate" name="ofcInDate" th:value="${userInfo.ofcInDate}" readonly>
|
||||
<div class="col-sm-2">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="ofcInDate" name="ofcInDate" th:value="${userInfo.ofcInDate}" th:disabled="${!#strings.isEmpty(userInfo.dicCode)}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label for="ogCd" class="col-sm-2 col-form-label col-form-label-sm text-center">계급</label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-select form-select-sm" id="titleCd" name="titleCd">
|
||||
<div class="col-sm-2">
|
||||
<select class="form-select form-select-sm" id="titleCd" name="titleCd" th:disabled="${!#strings.isEmpty(userInfo.dicCode)}">
|
||||
<option value="">--선택--</option>
|
||||
<th:block th:each="code:${titleList}">
|
||||
<th:block th:each="code:${session.commonCode.get('JT')}">
|
||||
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq userInfo.titleCd}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<label for="titleInDate" class="col-sm-2 col-form-label col-form-label-sm text-center">현계급임용일</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="titleInDate" name="titleInDate" th:value="${userInfo.titleInDate}" readonly>
|
||||
<div class="col-sm-2">
|
||||
<input type="text" class="form-control form-control-sm dateSelector" id="titleInDate" name="titleInDate" th:value="${userInfo.titleInDate}" th:disabled="${!#strings.isEmpty(userInfo.dicCode)}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label for="outturnCd" class="col-sm-2 col-form-label col-form-label-sm text-center">경과</label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-select form-select-sm" id="outturnCd" name="outturnCd">
|
||||
<div class="col-sm-2">
|
||||
<select class="form-select form-select-sm" id="outturnCd" name="outturnCd" th:disabled="${!#strings.isEmpty(userInfo.dicCode)}">
|
||||
<option value="">--선택--</option>
|
||||
<th:block th:each="code:${outturnList}">
|
||||
<th:block th:each="code:${session.commonCode.get('OTC')}">
|
||||
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq userInfo.outturnCd}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<label for="seriesCd" class="col-sm-2 col-form-label col-form-label-sm text-center">직별</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="col-sm-2">
|
||||
<select class="form-select form-select-sm" id="seriesCd" name="seriesCd">
|
||||
<option value="">--선택--</option>
|
||||
<th:block th:each="code:${seriesList}">
|
||||
<th:block th:each="code:${session.commonCode.get(userInfo.outturnCd)}">
|
||||
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq userInfo.seriesCd}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
|
|
@ -171,14 +169,46 @@
|
|||
</div>
|
||||
<div class="row mb-1">
|
||||
<label for="languageCd" class="col-sm-2 col-form-label col-form-label-sm text-center">외국어특채</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="col-sm-2">
|
||||
<select class="form-select form-select-sm" id="languageCd" name="languageCd">
|
||||
<option value="">--선택--</option>
|
||||
<th:block th:each="code:${languageList}">
|
||||
<option th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq userInfo.languageCd}"></option>
|
||||
<th:block th:each="code:${session.commonCode.get('LNG')}">
|
||||
<option th:if="${code.useChk eq 'T'}" th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq userInfo.languageCd}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<label for="languageCd" class="col-sm-2 col-form-label col-form-label-sm text-center">구사 외국어</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="text" class="form-control form-control-sm" name="useLanguage" th:value="${userInfo.useLanguage}">
|
||||
</div>
|
||||
<label for="languageCd" class="col-sm-2 col-form-label col-form-label-sm text-center">수준</label>
|
||||
<div class="col-sm-2">
|
||||
<select class="form-select form-select-sm" name="languageGrd">
|
||||
<option value="">해당없음</option>
|
||||
<option value="1" th:selected="${userInfo.languageGrd eq '1'}">상</option>
|
||||
<option value="2" th:selected="${userInfo.languageGrd eq '2'}">중</option>
|
||||
<option value="3" th:selected="${userInfo.languageGrd eq '3'}">하</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label for="languageCd" class="col-sm-2 col-form-label col-form-label-sm text-center">학력사항</label>
|
||||
<div class="col-sm-2">
|
||||
<select class="form-select form-select-sm" name="educationGrd">
|
||||
<option value="">해당없음</option>
|
||||
<th:block th:each="code:${session.commonCode.get('UED')}">
|
||||
<option th:if="${code.useChk eq 'T'}" th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq userInfo.educationGrd}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<label for="languageCd" class="col-sm-2 col-form-label col-form-label-sm text-center">학교</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="text" class="form-control form-control-sm" name="school" th:value="${userInfo.school}">
|
||||
</div>
|
||||
<label for="languageCd" class="col-sm-2 col-form-label col-form-label-sm text-center">전공</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="text" class="form-control form-control-sm" name="specialism" th:value="${userInfo.specialism}">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue