작성
·
436
0
오류문은
2023-03-13 17:17:43,619 ERROR [egov.lib.util.ExampleAop] ST에러발생===============
2023-03-13 17:17:43,620 ERROR [egov.lib.util.ExampleAop] 에러위치:class org.mybatis.spring.MyBatisSystemException
2023-03-13 17:17:43,620 ERROR [egov.lib.util.ExampleAop] 에러내용:nested exception is org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: java.lang.IllegalArgumentException: Result Maps collection does not contain value for selectBorderView
### Cause: java.lang.IllegalArgumentException: Result Maps collection does not contain value for selectBorderView
2023-03-13 17:17:43,620 ERROR [egov.lib.util.ExampleAop] ED에러발생===============
이고, 이걸 작성한 Controller는
@RequestMapping(value="/borderView.do")
public String borderView(HttpServletRequest request, ModelMap model) throws Exception
{
HashMap<String,Object> paramMap = new HashMap<String,Object>();
ArrayList<HashMap<String,Object>> list = new ArrayList<HashMap<String,Object>>();
String borderId = request.getParameter("no").toString();
paramMap.put("borderId", borderId);
paramMap.put("ref_cursor", null);
borderService.selectBorderView(paramMap);
list = (ArrayList<HashMap<String,Object>>)paramMap.get("ref_cursor");
model.addAttribute("resultList",list);
return "border/borderView";
}
이고,
BorderDAO.xml 에는
<select id="selectBorderView" statementType="CALLABLE" resultType="java.util.HashMap" parameterType="java.util.HashMap">
CALL web_main.selectBorderView(#{borderId},#{ref_cursor, mode=OUT, jdbcType=CURSOR, javaType=ResultSet, resultMap=selectBorderView})
</select>
를 추가 하였습니다.
Oracle Procedure는
PROCEDURE selectBorderView
(
In_borderId IN NUMBER,
ref_cursor OUT SYS_REFCURSOR
) IS
BEGIN
OPEN ref_cursor FOR
SELECT
borderid,
nickname,
title,
bordertext
FROM EGOV_BBS
WHERE BORDERID = In_borderId;
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('오류발생');
DBMS_OUTPUT.PUT_LINE('에러내용:'||SQLERRM);
DBMS_OUTPUT.PUT_LINE('발생위치:'||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
END selectBorderView;
이렇게 작성하였는데, BorderList.do까지는 잘 되었지만, 그 후로 상세보기가 안되네요
답변 3
1
딱히 문제점은 없어보여요.
살펴 보실 점은 아래처럼 권장드립니다.
1.jsp폴더에서 border폴더 밑에 borderView.jsp파일이 있는지 확인(대소문자 구분)
2.
-프로젝트에서 마우스 우클릭->Maven->Update Project->OK눌러주기(라이브러리 다시 다운로드 과정입니다.)
-빌드(톰캣서버가 사용 할 실행파일을 재생성)를 해줍니다.
그 후 다시 웹서버를 실행시켜서 정상적으로 나오는지 확인해주세요.
3. 9강내용 디버깅을 사용하시면 어디서 오류가 나는지 추적하실 수 있습니다.
해결이 안되시면 vmproductor@gmail.com로 프로젝트 폴더를 압축 후 이메일로 보내주시면 확인해보겠습니다.
0
빠른 답변 감사드립니다.
수정 후 확인해봤는데, 이번엔 SQL문 에러메세지는 안나오는데 borderView.do 요청시 반응이 없더라구요..
resultList 에는 아래와 같이 값이 들어가 있고, Sysout으로 값을 꺼내보니 다음과 같이 DB에서 잘 가지고 오는걸 확인했습니다.
[{BORDERID=11, NICKNAME=user12, BORDERTEXT=과연될까, TITLE=제목741이다}]
그렇다면, 결국 borderView.java에서 문제가 생겼다는것인데,
제 코드는 다음과 같습니다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.mytable
{
border: 1px solid black;
width: 800px;
margin:50px auto 0px auto;
}
.mytable .td1
{
width:100px;
}
.mytable .td2
{
width:700px;
}
.mytable .td3
{
vertical-align: 0px;
}
.mytable .td4
{
text-align: right;
}
.mytable .mytextarea
{
height:500px;
resize: none;
}
</style>
</head>
<body>
<table class="mytable">
<tr>
<td class="td1">작성자</td>
<td class="td2">${resultList[0].NICKNAME}</td>
</tr>
<tr>
<td class="td1">제목</td>
<td><input type="text" class="td2" name="title" readonly value="${resultList[0].TITLE}"></td>
</tr>
<tr>
<td class="td1 td3">내용</td>
<td><textarea class="td2 mytextarea" name="mytextarea" readonly>${resultList[0].BORDERTEXT}</textarea></td>
</tr>
<tr>
<td colspan="2" class="td4">
<!-- javascript로 사용자에게 안보여지게 처리필요. -->
<input type="button" value="수정">
<input type="button" value="삭제">
<a href="borderReply.do?no=${resultList[0].BORDERID}"><input type="button" value="답글"></a>
<a href="borderList.do"><input type="button" value="목록보기"></a>
</td>
</tr>
</table>
</body>
</html>
혹시 위에서 잘못된 표현이 있을까요 ㅠㅠ 못찾겠어요..
0