인프런 커뮤니티 질문&답변

이영준님의 프로필 이미지
이영준

작성한 질문수

3. 웹개발 코스 [스프링 프레임워크+전자정부 표준프레임워크]

제11강 게시판 상세보기, 답글달기

borderView.do 가 안됩니다.

작성

·

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

개발자Park님의 프로필 이미지
개발자Park
지식공유자

딱히 문제점은 없어보여요.

살펴 보실 점은 아래처럼 권장드립니다.

1.jsp폴더에서 border폴더 밑에 borderView.jsp파일이 있는지 확인(대소문자 구분)

2.

-프로젝트에서 마우스 우클릭->Maven->Update Project->OK눌러주기(라이브러리 다시 다운로드 과정입니다.)

-빌드(톰캣서버가 사용 할 실행파일을 재생성)를 해줍니다.

그 후 다시 웹서버를 실행시켜서 정상적으로 나오는지 확인해주세요.

3. 9강내용 디버깅을 사용하시면 어디서 오류가 나는지 추적하실 수 있습니다.

해결이 안되시면 vmproductor@gmail.com로 프로젝트 폴더를 압축 후 이메일로 보내주시면 확인해보겠습니다.

 

0

이영준님의 프로필 이미지
이영준
질문자

빠른 답변 감사드립니다.

수정 후 확인해봤는데, 이번엔 SQL문 에러메세지는 안나오는데 borderView.do 요청시 반응이 없더라구요..

BorderController.java 에서

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

개발자Park님의 프로필 이미지
개발자Park
지식공유자

[답변완료로 숨김처리 되었습니다.]

이영준님의 프로필 이미지
이영준

작성한 질문수

질문하기