해결된 질문
23.12.27 15:51 작성
·
232
·
수정됨
0
안녕하세요. 페이징 처리 관련하여 질문 사항 있어 요청 드립니다.
현재 다른 분께서 페이징 처리 관련하여 질문하신 것에 강사님께서 댓글 달아주신 내용 보면서 페이징 처리 구현 중인데 잘 안되서 문의드립니다.
구현한 사항은 순서대로 다음과 같습니다.
1) OB_001.xfdl(게시판 메인화면) 그리드 하단에 div 만들고
id : Div00
url : cmm::paging_comm.xfdl
기입한 후, 저장하였습니다
2) paging_comm.xfdl
cmm 폴더내에 paging_comm.xfdl 파일 생성하여 페이징 처리 관련 컴포넌트 만들고 ID 부여하였습니다.
이후, 공유해주신 링크에 paging_comm.xfdl 페이징 처리 스크립트 전체 복사하여 붙여넣었습니다.
3) UiadapterBoardServiceImpl.java에 page_sample.jsp 스크립트를 java 코드로 변환하여 selectOrdLList 메서드에 코드 추가하였습니다.
코드 아래와 같이 첨부드리니 확인 부탁드립니다.
( HttpServletRequest request = ;, HttpServletResponse response = 부분에서
request.getInputStream()과 response.getOutputStream();에서 "The local variable request may not have been initialized" 동일한 오류 납니다. )
public ArrayList<Map<String, Object>> selectOrdList(Map<String, Object> ds_searchList) {
UiadapterBoardMapper mapper = sqlSession.getMapper(UiadapterBoardMapper.class);
try {
String strCharset = "utf-8";
// PlatformRequest 생성 및 데이터 수신
HttpServletRequest request = (HttpServletRequest) request.getInputStream(); //The local variable request may not have been initialized 오류 발생
PlatformRequest platformRequest = new PlatformRequest(request.getInputStream(), PlatformType.CONTENT_TYPE_XML, strCharset);
platformRequest.receiveData();
PlatformData inPD = platformRequest.getData();
VariableList inVariableList = inPD.getVariableList();
DataSetList inDataSetList = inPD.getDataSetList();
int iRowCnt = inVariableList.getInt("rowCount");
int iPageNo = inVariableList.getInt("pageNum");
// PlatformResponse 생성
HttpServletResponse response = (HttpServletResponse) response.getOutputStream(); // The local variable request may not have been initialized 오류 발생
PlatformResponse platformResponse = new PlatformResponse(response.getOutputStream(), PlatformType.CONTENT_TYPE_XML, strCharset);
PlatformData outPD = new PlatformData();
VariableList outVariableList = new VariableList();
DataSetList outDataSetList = new DataSetList();
try {
int iTotalRowCount = 1000;
int nPageBlock = (int) Math.ceil((double) iTotalRowCount / iRowCnt);
int nStartRow = iRowCnt * (iPageNo - 1);
int nEndRow = nStartRow + 30;
DataSet outDataSet = new DataSet("output");
outDataSet.addColumn("Column0", DataTypes.INT, 10);
outDataSet.addColumn("Column1", DataTypes.STRING, 10);
outDataSet.addColumn("Column2", DataTypes.STRING, 10);
outDataSet.addColumn("Column3", DataTypes.STRING, 10);
outDataSet.addColumn("Column4", DataTypes.STRING, 10);
outDataSet.addColumn("Column5", DataTypes.STRING, 10);
outDataSet.addColumn("Column6", DataTypes.STRING, 10);
outDataSet.addColumn("Column7", DataTypes.STRING, 10);
outDataSet.addColumn("Column8", DataTypes.STRING, 10);
outDataSet.addColumn("Column9", DataTypes.STRING, 10);
int nRow;
for (int i = nStartRow; i < nEndRow; i++) {
if (i + 1 > 1000) {
break;
}
nRow = outDataSet.newRow();
outDataSet.set(nRow, "Column0", i + 1);
outDataSet.set(nRow, "Column1", "test");
outDataSet.set(nRow, "Column2", "test");
outDataSet.set(nRow, "Column3", "test");
outDataSet.set(nRow, "Column4", "test");
outDataSet.set(nRow, "Column5", "test");
outDataSet.set(nRow, "Column6", "test");
outDataSet.set(nRow, "Column7", "test");
outDataSet.set(nRow, "Column8", "test");
outDataSet.set(nRow, "Column9", "test");
}
outDataSetList.add(outDataSet);
Variable pageBlockCount = new Variable("pageBlockCount");
pageBlockCount.set(nPageBlock);
Variable totRowCount = new Variable("totRowCount");
totRowCount.set(iTotalRowCount);
outVariableList.add("ErrorCode", 0);
outVariableList.add("ErrorMsg", "succ");
outVariableList.add(pageBlockCount);
outVariableList.add(totRowCount);
} catch (Exception e) {
outVariableList.add("ErrorCode", -1);
outVariableList.add("ErrorMsg", e.toString());
} finally {
outPD.setDataSetList(outDataSetList);
outPD.setVariableList(outVariableList);
OutputStream out = response.getOutputStream();
platformResponse.setData(outPD);
platformResponse.sendData();
}
} catch (Exception e) {
}
return mapper.selectOrdList(ds_searchList);
}
4) 기존 주문 조회 쿼리를 안내해주신대로 한번 더 감싸서 수정하였습니다
4) 기존 주문 조회 쿼리를 안내해주신대로 한번 더 감싸서 수정하였습니다
SELECT *
FROM ( A.ORD_NO AS ORD_NO /*주문번호*/
, FN_CODE_NM('001',A.ORD_STAT_CD) AS ORD_STAT_NM /*주문상태*/
, A.CUST_CD AS CUST_NO /*고객번호*/
, B.CUST_NM AS CUST_NM /*고객명*/
, FN_CODE_NM('002',B.CUST_GBCD) AS CUST_GBCD_NM /*고객구분*/
, B.PHONE AS PHONE /*전화번호*/
, B.ADDR AS ADDR /*주소*/
, C.ITEM_NM AS ITEM_NM /*상품명*/
, A.REG_DT AS REG_DT /*주문일시*/
, 0 AS CHK /*체크박스*/
FROM TB_ORD A
LEFT JOIN
TB_CUST B ON A.CUST_CD = B.CUST_CD
LEFT JOIN
TB_ITEM C ON A.ITEM_CD = C.ITEM_CD
WHERE 1=1
<if test="ORD_NO != null and ORD_NO !=''">
AND A.ORD_NO = #{ORD_NO}
</if>
<if test="CUST_NM != null and CUST_NM !=''">
AND B.CUST_NM = #{CUST_NM}
</if>
<if test="COMP_YN == 'true'">
AND B.CUST_GBCD = 'C'
</if>
<if test="ORD_STAT_CD != null and ORD_STAT_CD !=''">
AND A.ORD_STAT_CD = #{ORD_STAT_CD}
</if>
<if test="CUST_GBCD != null and CUST_GBCD !=''">
AND B.CUST_GBCD = #{CUST_GBCD}
</if>) A
<choose>
<when test = "pageNum ==1 ">
WHERE <![CDATA[A.RNUM <= #{rowCount}]]>
</when>
<otherwise>
WHERE <![CDATA[A.RNUM > (#{pageNum}-1)*#{rowCount} AND A.RNUM <= #{pageNum}*#{rowCount}]]>
</otherwise>
</choose>
5) 결과
상단과 같은 과정을 통해 구현한 후, 넥사크로에서 런치하여 확인해보니 메인화면 자체가 뜨지 않습니다.
혹시 paging_comm.xfdl의 스크립트와 page_sample.jsp 자바 형식으로 변환하여 UiadapterBoardServiceImpl에 구현한 코드 공유해주실 수 있으실까요?
그리고 OB_001.xfdl에 페이징 처리 div 만들고 "id : Div00"와 "url : cmm::paging_comm.xfdl" 부여한 후, cmm 폴더에 paging_comm.xfdl 형성하여 페이징 처리 관련 컴포넌트 그리고 id 부여하여 스크립트 복붙하는게 맞는지 확인 부탁드립니다.
감사합니다.
답변 1
0
2023. 12. 29. 13:39
안녕하세요~ 킷도우입니다:)
kitdow.on@gmail.com 으로 메일 요청 주시면 해당 메일로 유관 소스 첨부하여 전송 드리겠습니다:)
해당 소스 참고해서 구현하시면 도움되실 것 같습니다.
감사합니다!