이번오류는 정말 오랜시간 해결되지 않았다.
코드 자체도 복잡하고 placeNm, firstPlace, secondPlace, thirdPlace 등이 다양하며
심지어 beforeplaceNm, beforeFirstPlace,,, 하나를 수정하는데 여러개의 변수가 생겼다.
💢이전에 안되던 코드
<td class="tit">부서명</td>
<td class="textL">
<form:input type="hidden" path="placeId" id="placeId" title="보관위치" />
<input type="text" id="placeNm" class="form-control form-control-sm" style="width:92%;" readonly="readonly" value="<c:out value='${pcHardwareVO.firstPlace}'/> <c:out value='${pcHardwareVO.secondPlace}'/>
<c:out value='${pcHardwareVO.thirdPlace}'/>"/>
<a href="#LINK" onclick="javascript:fnTest()"><img src="<c:url value='/images/egovframework/com/cmm/icon/search.gif' />"width="20" height="20" align="middle" alt="새창" /></a>
</td>
부서명을 설정할수 있는 form 이다. fnTest()를 실행하면
function fnTest(){
var retVal;
var url = "<c:url value='/PcAddHw2.do'/>";
var varParam = new Object();
var openParam = "dialogWidth:680px;dialogHeight:480px;scroll:yes;status:no;center:yes;resizable:yes;";
retVal = window.open(url, '', openParam);
if(retVal) {
document.getElementById("placeId").value = retVal.sIdx;
document.getElementById("placeNm").value = retVal.sName;
}
}
여기함수가 실행되었고 PcAddHw2.do가 실행되었다.
pcAddHw2에서 값을 전달을 못하는건가 싶었지만 부서 코드가 변경되어서 그것은 아닌것 같았다.
컨트롤러도 수정을 해보았다.
@RequestMapping(value="/updateHardware.do")
public String updateHardware(PcHardwareVO pcHardwareVO, @ModelAttribute("searchVO") PcManagementDefaultVO searchVO, SessionStatus status, Model model, HttpServletRequest request) throws Exception
{
LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
PcLogVO pcLogVO = new PcLogVO();
searchVO.setHardwareId(pcHardwareVO.getHardwareId());
List hardwareList = pcManagementService.selectPcHardwareList(searchVO);
pcHardwareVO.setPurPrice(pcHardwareVO.getPurPrice().replaceAll(",",""));
pcManagementService.updatePcHardware(pcHardwareVO);
String hwState = request.getParameter("beforeHwState");
String deadline = request.getParameter("beforeDeadline");
String ip = request.getParameter("beforeIp");
String purpose = request.getParameter("beforePurpose");
String beforeSecondPlace = request.getParameter("beforeSecondPlace");
String beforeThirdPlace = request.getParameter("beforeThirdPlace");
String hwUserNm = request.getParameter("beforeHwUserNm");
String secondPlace = request.getParameter("secondPlace");
String thirdPlace = request.getParameter("thirdPlace");
String placeNm = request.getParameter("secondPlace") + request.getParameter("thirdPlace");
String placeNmSame = request.getParameter("secondPlace") + request.getParameter("thirdPlace");
String beforePlaceNm = request.getParameter("beforeSecondPlace") + request.getParameter("beforeThirdPlace");
if(hwState=="001"){hwState="활용";}
if(hwState=="002"){hwState="장애";}
if(hwState=="003"){hwState="예비";}
if(hwState=="004"){hwState="불용";}
if(hwState=="005"){hwState="폐기";}
String afterHwState = pcHardwareVO.getHwState();
String afterIp = pcHardwareVO.getIp();
if(afterHwState.equals("001")==true){afterHwState="활용";}
if(afterHwState.equals("002")==true){afterHwState="장애";}
if(afterHwState.equals("003")==true){afterHwState="예비";}
if(afterHwState.equals("004")==true){afterHwState="불용";}
if(afterHwState.equals("005")==true){afterHwState="폐기";}
//log
pcLogVO.setUserId(loginVO.getId());
pcLogVO.setHardwareId(pcHardwareVO.getHardwareId());
if(hwState.equals(afterHwState)==false){
pcLogVO.setMenuNm("장비관리");
pcLogVO.setLogName("수정");
pcLogVO.setSoftwareId("");
pcLogVO.setLogContents("장비[ "+pcHardwareVO.getHardwareId()+" ] 상태 [ "+hwState+" ] → [ "+afterHwState+" ] 수정");
pcManagementService.insertPcLog(pcLogVO);
}
if(beforePlaceNm.equals(pcHardwareVO.getPlaceNm())==false){
pcLogVO.setMenuNm("장비관리");
pcLogVO.setLogName("수정");
pcLogVO.setSoftwareId("");
pcLogVO.setLogContents("장비 [ " + pcHardwareVO.getHardwareId()+ " ] 부서 [ " + beforePlaceNm + " ] → [ " + placeNm + " ] 수정");
pcManagementService.insertPcLog(pcLogVO);
}
if(hwUserNm.equals(pcHardwareVO.getHwUserNm())==false){
pcLogVO.setMenuNm("장비관리");
pcLogVO.setLogName("수정");
pcLogVO.setSoftwareId("");
pcLogVO.setLogContents("장비 [ "+pcHardwareVO.getHardwareId()+" ] 사용자 [ "+hwUserNm+" ] → [ "+pcHardwareVO.getHwUserNm()+" ] 수정");
pcManagementService.insertPcLog(pcLogVO);
}
if(ip.equals(pcHardwareVO.getIp())==false){
pcLogVO.setMenuNm("장비관리");
pcLogVO.setLogName("수정");
pcLogVO.setSoftwareId("");
pcLogVO.setLogContents("장비[ "+pcHardwareVO.getHardwareId()+" ] IP [ "+ip+" ] → [ "+pcHardwareVO.getIp()+" ] 수정");
pcManagementService.insertPcLog(pcLogVO);
}
if(purpose.equals(pcHardwareVO.getPurpose())==false){
pcLogVO.setMenuNm("장비관리");
pcLogVO.setLogName("수정");
pcLogVO.setSoftwareId("");
pcLogVO.setLogContents("장비[ "+pcHardwareVO.getHardwareId()+" ] 사용용도 [ "+purpose+" ] → [ "+pcHardwareVO.getPurpose()+" ] 수정");
pcManagementService.insertPcLog(pcLogVO);
}
if(deadline.equals(pcHardwareVO.getDeadline())==false){
pcLogVO.setMenuNm("장비관리");
pcLogVO.setLogName("수정");
pcLogVO.setSoftwareId("");
pcLogVO.setLogContents("장비[ "+pcHardwareVO.getHardwareId()+" ] 회수예정일 [ "+deadline+" ] → [ "+pcHardwareVO.getDeadline()+" ] 수정");
pcManagementService.insertPcLog(pcLogVO);
}
/*else {
status.setComplete();
}*/
status.setComplete();
/*return "redirect:/pcAssetRegistP.do";*/
return "forward:/PcAssetList.do";
}
정말 열심히 삽질하다 해결되었다.
💙해결된 코드
function fn_save() {
frm = document.getElementById("pcHardwareVO");
var hwState = "";
var secondPlace = "";
var thirdPlace = "";
var hwUserNm = "";
var deadline = "";
var ip = "";
var purpose = "";
<c:forEach var="assetList" items="${assetList}" varStatus="status">
hwState = "<c:out value="${assetList.hwState}"/>";
secondPlace = "<c:out value="${assetList.secondPlace}"/>";
thirdPlace = "<c:out value="${assetList.thirdPlace}"/>";
hwUserNm = "<c:out value="${assetList.hwUserNm}"/>";
deadline = "<c:out value="${assetList.deadline}"/>";
ip = "<c:out value="${assetList.ip}"/>";
purpose = "<c:out value="${assetList.purpose}"/>";
</c:forEach>
frm.beforeHwState.value = hwState;
frm.beforeIp.value = ip;
frm.beforePurpose.value = purpose;
frm.beforeSecondPlace.value = secondPlace;
frm.beforeThirdPlace.value = thirdPlace;
frm.beforeHwUserNm.value = hwUserNm;
frm.beforeDeadline.value = deadline;
var placeNmElement = document.getElementById("placeNm");
var placeNmValue = placeNmElement.value;
// secondPlace 설정
var secondPlaceValue = placeNmValue; // 원하는 값으로 설정
frm.secondPlace.value = secondPlaceValue;
if (confirm("저장 하시겠습니까?")) {
frm.action = "<c:url value='/updateHardware.do' />";
frm.submit();
}
}
form에 입력된 값을 javaScript 변수에 할당해주었다.
var placeNmElement = document.getElementById("placeNm"); // placeNm 요소 가져오기
var secondPlaceValue = placeNmElement.value; // secondPlace 값 가져오기
form 의 id는 placeNm이었고 secondPlace값을 가져올수있었다.
frm.secondPlace.value = secondPlaceValue;
그후에 위의 코드를 추가하여 완성하였다. 의문인건...thirdPlaceValue를 적용안해도 된다는거...ㅎ..
form에 입력된 값을 controller로 전달하여 로그를 남기는 코드였다.
'java' 카테고리의 다른 글
java 외부 mysql과 연동하기- sms 문자전송 (0) | 2024.07.31 |
---|---|
mvc 패턴 구성요소 이해하기 (0) | 2024.07.18 |
HackerRank 4단계 (0) | 2023.05.09 |
HackerRank - Java 7 - 3단계 If-Else (0) | 2023.05.04 |
catch TypeError: Cannot read properties of undefined 해결하기 (0) | 2023.04.28 |