해킹해피
141
2018-10-12 20:01:39
11
268

게시판.. 글작성 화면 안뜰 때..




어찌저찌 하다보니 게시판이 어느정도 완성이 되가고 있네요.. 

jsp 부분이랑 java부분은 콘솔창 보면서 어느정도 따라 수정하고 있지만

DB부분  잘 모르겠어서 질문 드립니다.


글 내용을 입력 후 작성하면 제목과 내용이 나타나지 않습니다..

목록을 보면 글 추가는 정상적으로 되지만 글 제목에는 표시가 안되네요..

db들어가보면 날짜만 등록 날짜로 되고 제목과 이름 내용은 NULL 값으로 뜹니다..



이게 글 작성할 때 만든 xml인데 혹시 여기서 문제가 있는걸 까요??

0
0
  • 답변 11

  • 해킹해피
    141
    2018-10-12 20:11:20


    에러 코드중에 끝부분에   ? , ? , ?가


    마지막 올린 사진중에 

    #{frtitle},

    #{frcontent},

    #{frname} 이 부분을 인식을 못하는 건가요??


    따라 치다 보니까 저 부분이 mybits 인가요? 

    저 부분이 왜 에러가 날까요...

    0
  • 잡채밥냠냠
    168
    2018-10-12 21:47:20 작성 2018-10-12 21:48:55 수정됨

    네 저게 mybatis에요. 그리고 저건 에러가 아니라 님이 db insert 할 파라미터로 null, null, html c tag~(스트링 타입)을 넣었어요.

    frtitle도 null(값 없음)이라서 제목이 안나온거에요.

    컨트롤러에서 vo.getFrtitle 로그 찍어보세요

    0
  • 깨구리
    1k
    2018-10-13 00:12:08

    저장한 화면이 안뜨기 전에, 저장할 때부터 잘못됐습니다.

    제목과 내용은 아예 안 보냈고, frname은 <c:out value="smtm"/> 값이 넘어가고 있네요.

    저장하는 부분을 올려봐주세요~


    그리고 글 쓰실 때 캡쳐하지 마시고 이 게시판 에디터의 '코드' 기능을 활용하시면 다른 사람이 코드 보기가 더 쉬워요.


    0
  • 해킹해피
    141
    2018-10-13 01:15:45 작성 2018-10-13 01:21:08 수정됨

    잡채밥냠냠 


    답변 감사드립니다


    아직 초보라 무슨말씀인지 계속 보다보니 디비 기본값이 NULL로 되어 있는 것을 확인했네요


    마리아디비 (HeidiSQL) 에서 기본값 없음으로 바꾸고 저장을 눌렀더니 NULL로 되어 있는 3개가 원래대로 돌아옵니다...

    여기를 수정하라는 말씀이신가요~~?

    여기를 수정해야 되면 저장할때 기본값없음으로 어떻게 바꾸죠...


    컨트롤러에서 vo.getFrtitle는 어디서 어떤식으로 찍는지 잘 몰라서 못하고 있습니다..ㅠㅠ





    0
  • 해킹해피
    141
    2018-10-13 01:19:23

    깨구리


    답답한 와중에 답변 주셔서 감사드립니다!


    덕분에 글작성시에 코드 올릴 수 있는것을 알았습니다

     <c:out value="smtm"/> 는 메인에 세션 작업해서 메인에서 글쓰기로 들어가야 해당 이름이 

    뜨는데 메인 - A  - 제가 작업하는 게시판 으로 들어가서 세션이 안먹히는 것으로 알고 있어서

    작성자는 그냥 넘기고 있었습니다.. 


    세션에서 바로 해당 게시판으로 바로 들어가야 정상적으로 뜨는건가요?



    저장하는 부분이면 어떤 부분을 올리면 될까요.. ㅠㅠ?


    답변 감사드립니다!!
     


    0
  • 잡채밥냠냠
    168
    2018-10-14 14:11:33 작성 2018-10-14 14:13:47 수정됨

    HeidiSQL에서 저 기본값세팅은 값이 없을 때, 처리하는거라서 상관없고, 만질필요도 없어요.


    글 등록할때 컨트롤러로 파라미터들이 제대로 넘어가지 않네요.


    컨트롤러에서 받는 freeBoardVO안에 담긴 내용을 찍어보세요.


    저 freeBoardVO 클래스에 getter/setter 메소드 있을거잖아요.


    0
  • 해킹해피
    141
    2018-10-17 17:32:34

    잡채밥냠냠


    답변 감사드립니다.



    말씀해주신 부분으로 freeBoardVO에 보니 값은 넘겨 받으나, null값으로 떠서 같은 에러가 표시 되는 것 같습니다

    getter/setter메소드도 이상이 없는것 같은데..


    이후 어디를 봐야 해결이 되는지 며칠째 찾아봐도 해결이 안됩니다..ㅠㅠ

    초보이다 보니 에러에 대한 해결이 아직 미흡하네요


    죄송한 말씀이지만 소스코드를 봐주실 수 있으신가요..?



    0
  • 잡채밥냠냠
    168
    2018-10-17 20:06:55

    값은 넘겨받으나, null로 나온다는게 getter 메소드로 컨트롤러에서 찍었을때 null이라는 말씀이신가요?? 


    controller, dao, service에서 각각 다 찍어보세요.


    관련된 소스를 모두 올려보세요.

    0
  • 해킹해피
    141
    2018-10-18 01:09:16 작성 2018-10-19 15:03:03 수정됨

    잡채밥냠냠

    감사합니다.!!


    자유게시판에서 글을 쓴 후 글쓰기를 눌렀을 때 parameters은 정상적으로 받았는데 

    null이 떠서요.. 이게 컨트롤러까지 잘 갔다가 온거로 생각 하고 있었습니다..


    봐주셔서 감사합니다..ㅠㅠ 

    처음 만들어 보는거라 아무리 찾아봐도 잘 모르겠네요..



    콘솔 에러

    2018-10-18 01:00:23,202 DEBUG [egovframework.example.community.service.impl.FreeBoardMapper.freeinsertBoardList] ==>  Preparing: INSERT INTO music ( frno, frtitle, frcontent, frname ) VALUES ( (SELECT IFNULL(MAX(frno)+1,1) FROM music mmmsic), ?, ?, ? ) 
    2018-10-18 01:00:23,202 DEBUG [egovframework.example.community.service.impl.FreeBoardMapper.freeinsertBoardList] ==> Parameters: null, null, &lt;c:out value=&apos;smtm&apos;/&gt;(String)
    2018-10-18 01:00:23,203 DEBUG [egovframework.example.community.service.impl.FreeBoardMapper.freeinsertBoardList] <==    Updates: 1
    model : {userName=smtm, freeBoardVO=egovframework.example.community.service.FreeBoardVO@6ad57097, org.springframework.validation.BindingResult.freeBoardVO=org.springframework.validation.BeanPropertyBindingResult: 0 errors}
    




    freeBoard.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
    <form id="headerFrm" name="headerFrm">
    	<input type="hidden" id="headerPageName" name="headerPageName" />
    </form>
    
    <script>
    var insertForm = {
    	$btnInsert			: $,
    	
    	init				: function() {
    		this.$btnInsert = $("#insertForm");
    	},
    	
    	pageSubmitFn		: function(pageName) {
    		this.$btnInsert.attr("action", pageName + ".do");
    		
    		this.$btnInsert.submit();
    	}
    }
    
    $(function(){
    
    	$("#cancelBtn").click(function() {
    		left.pageSubmitFn("freeBoard");
    	});
    	
    	$("#btnInsert").click(function() {
    		insertForm.init();
    		insertForm.pageSubmitFn("freeBoardInsert");
    	});
    
    });
    </script>
    
    <div class="under_header">
    			<img class = "pic2" src = "images/info/pianokey.jpg">
    		</div>
    		<div class="page-content back_to_up">
    			<div class="row clearfix mb">
    				<div class="breadcrumbIn">
    					<ul>
    						<li><a href="index.html" class="toptip" title="Homepage"> <i class="icon-home"></i> </a></li>
    						
    						<li> 자유게시판 </li>
    					</ul>
    				</div><!-- breadcrumb -->
    			</div><!-- row -->
    		
    		
    		
    									
    			<div class="row row-fluid clearfix mbf">
    				<div class="span9 posts">
    					<div class="def-block clearfix">
    						<h3> 자유게시판 </h3><span class="liner"></span>
    								
    
    			<div class="mbf clearfix">
    				<div class="content table-responsive table-full-width">
    					<form id="insertForm" method="post" class="form-horizontal">
    						<table class="table">
    							<tr>
    								<th width= 60px>작성자</th>
    								<td>
    									<input style="margin: 0px; width: 592px; height: 25px;" 
    									 type="text" name="frname" value="<c:out value='${userName}'/>" readonly="readonly">
    								</td>
    							</tr>
    							<tr>
    								<th width= 60px>글제목</th>
    								<td >
    									<input style="margin: 0px; width: 592px; height: 25px;" 
    									 type="text"  name="title" placeholder="제목을 입력해주세요" >
    								</td>
    							</tr>
    							<tr>
    								<th width= 60px>글내용</th>
    								<td colspan="5" style="height: 400px">
    									<textarea style="margin: 0px; width: 592px; height: 383px;" 
    									name="content"  rows="4" placeholder="내용을 입력해주세요"></textarea>			
    								</td>
    							</tr>
    							</table>
    						</form>
    						<div style="float:right; margin-right: 16px; margin-top: 7px">
    							<button id="cancelBtn" type="button" class="tbutton color3 small"><span>취소</span></button>
    							<button id="btnInsert" type="button" class="tbutton color3 small"><span>등록</span></button>
    						</div>					
    				</div>		
    			</div>
    		</div>
    	</div>


    freeBoardDetail.jsp


    </style>
    		<div class="under_header">
    			<img class = "pic2" src = "images/info/pianokey.jpg">
    		</div>
    		<div class="page-content back_to_up">
    			<div class="row clearfix mb">
    				<div class="breadcrumbIn">
    					<ul>
    						<li><a href="index.html" class="toptip" title="Homepage"> <i class="icon-home"></i> </a></li>
    						
    						<li> 자유게시판 </li>
    					</ul>
    				</div><!-- breadcrumb -->
    			</div><!-- row -->
    		
    		
    		
    			<div class="row row-fluid clearfix mbf">
    				<div class="span9 posts">
    					<div class="def-block clearfix">
    						<h3> 자유게시판 </h3><span class="liner"></span>
    
    						<div class="mbf clearfix">
    							<table class="table">
    								<thead>
    									<tr>
    										<th width = 60px >글번호</th>
    										<th width = 250px>제목</th>
    										<th width = 60px>작성자</th>
    										<th width = 80px>작성일</th>
    										<th width = 60px>조회수</th>
    									</tr>
    									<tr>
    										<th width = 60px>
    											<c:out value="${freeBoardVO.frno}"/>
    										</th>
    										
    										<th width = 250px>
    											<c:out value="${freeBoardVO.frtitle}"/>
    										</th>
    										
    										<th width = 60px>
    											<c:out value="${freeBoardVO.frname}"/>
    										</th>
    										
    										<th width = 10px>
    											<c:out value="${freeBoardVO.regdate}"/>
    										</th>
    										
    										<th width = 60px>
    											<c:out value="${freeBoardVO.frcheck}"/>
    										</th>
    									</tr>
    								</thead>
    								<tbody>
    									<tr> 
    										<td colspan="5" style="height: 400px">
    										<c:out value="${freeBoardVO.frcontent}"/>
    										</td>
    									</tr>
    								</tbody>
    								<tfoot>
    									<tr>
    										<td colspan="4"></td>
    										<td><a href="notice.do" class="tbutton color3 small"><span>수정</span></a></td>
    									</tr>
    								</tfoot>
    							</table>
    						</div>
    					</div>
    				</div>


    컨트롤러


    @Controller
    public class CommunityController {
    	
    	@Resource(name = "freeBoardService")
    	private FreeBoardService freeBoardService;
    	
    	@ModelAttribute("userName")
    	public String user(HttpServletRequest request) throws Exception {
    		return (String) request.getSession().getAttribute("userName");
    	}
    	
    	
    	
    //	-------------자유게시판--------------------------------------------------------------------
    	@RequestMapping(value = "freeBoard.do")
    	public String freeBoard(ModelMap model) throws Exception {
    		List<EgovMap> freeBoardList = null;
    		
    		try {
    			freeBoardList = freeBoardService.selectfreeBoardList();
    			
    		} catch (Exception e) {
    			System.out.println("에러입니다");
    			
    			e.printStackTrace();
    		}
    		
    		
    		model.addAttribute("freeBoardList", freeBoardList);
    		
    		
    		return "community/freeBoard.tiles";
    	}
    	
    //	------------------자유게시판 읽기 페이지------------------------------------------------------
    	@RequestMapping(value = "freeBoardDetail.do")
    	public String freeBoardDetail(HttpServletRequest request,
    			ModelMap model) throws Exception {
    		String frNumber = request.getParameter("frNumber");
    		
    		int frNumberInt = Integer.parseInt(frNumber);
    		
    		FreeBoardVO freeBoardVO = new FreeBoardVO(); 
    		
    		try {
    			freeBoardVO = freeBoardService.boardDetail(frNumberInt);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		
    		model.addAttribute("freeBoardVO", freeBoardVO);
    		
    		return "community/freeBoardDetail.tiles";
    	}
    	
    //	-------------자유게시판 글쓰기 페이지 ------------------------------
    	@RequestMapping(value = "freeBoardWrite.do")
    	public String freeBoardWrite(ModelMap model) throws Exception {
    		//System.out.println("model : " + model.toString());
    	
    		return "community/freeBoardWrite.tiles";
    	}
    	
    //	------------자유게시판 글쓴 후 등록 컨트롤러 -------------------------
    	@RequestMapping(value = "freeBoardInsert.do")
    	public String freeBoardInsert(@ModelAttribute FreeBoardVO freeBoardVO, ModelMap model) throws Exception {
    		
    		try {
    			freeBoardService.freeinsertBoardList(freeBoardVO);
    			
    			System.out.println("model : " + model.toString());
    		} catch(Exception e){
    			e.printStackTrace();
    		} 
    		
    		return "community/freeBoardDetail.tiles";
    	}


    서비스


    public interface FreeBoardService {
    
    	List<EgovMap> selectfreeBoardList() throws Exception;
    
    	FreeBoardVO boardDetail(int frNumberInt) throws Exception;
    
    	void freeinsertBoardList(FreeBoardVO freeBoardVO) throws Exception;
    
    
    }


    서비스임플


    @Service("freeBoardService")
    public class FreeBoardServiceImpl implements FreeBoardService {
    	
    	@Resource(name = "freeBoardMapper")
    	private FreeBoardMapper freeBoardMapper;
    	
    	@Override
    	public List<EgovMap> selectfreeBoardList() throws Exception {
    		return freeBoardMapper.selectfreeBoardList();
    	}
    
    	@Override
    	public FreeBoardVO boardDetail(int frNumberInt) throws Exception {
    		return freeBoardMapper.boardDetail(frNumberInt);
    	}
    
    	@Override
    	public void freeinsertBoardList(FreeBoardVO freeBoardVO) throws Exception {
    		freeBoardMapper.freeinsertBoardList(freeBoardVO);
    	}
    
    
    }



    맵퍼


    @Mapper("freeBoardMapper")
    public interface FreeBoardMapper {
    
    	List<EgovMap> selectfreeBoardList() throws Exception;
    
    	FreeBoardVO boardDetail(int frNumberInt)throws Exception;
    
    	void freeinsertBoardList(FreeBoardVO freeBoardVO) throws Exception;
    
    
    
    }


    디비


    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="egovframework.example.community.service.impl.FreeBoardMapper">
    	
    	<!-- 게시판 리스트 화면 -->
    	<select id="selectfreeBoardList" resultType="egovMap">
    		SELECT	frno,
    				frtitle,
    				frname,
    				frcheck,
    				DATE_FORMAT(regdate, '%Y-%m-%d') as regdate
    			FROM MUSIC
    	
    	</select>
    	
    	<!-- 작성글 디테일 화면 -->
    	<select id="boardDetail" parameterType="int" resultType="freeBoardVO">
    		SELECT	frno,
    				frtitle,
    				frname,
    				frcheck,
    				frcontent,	
    				left(regdate,10) as regdate
    		  FROM	MUSIC
    		 WHERE	frno = #{_parameter}
    	</select>
    	
    <!-- 자유게시판 글작성 후 DB 	 -->
    	<insert id="freeinsertBoardList" parameterType="freeBoardVO">
    		INSERT INTO music
    		(
    			frno,
    			frtitle,
    			frcontent,
    			frname
    		)
    		VALUES
    		(
    			(SELECT IFNULL(MAX(frno)+1,1) FROM music mmmsic),
    			#{frtitle},
    			#{frcontent},
    			#{frname}
    		)
    	</insert>
    
    </mapper>


    VO


    public class FreeBoardVO {
    
    	private int		frno;	//게시글 번호
    	private String	frtitle;	//게시글 제목
    	private String	frname;		//게시글 작성자
    	private String	regdate;	//게시글 작성일자
    	private int		frcheck;	//게시글 조회수 
    	private String 	frcontent;	//내용
    	
    	
    	public int getFrno() {
    		return frno;
    	}
    	public void setFrno(int frno) {
    		this.frno = frno;
    	}
    	public String getFrtitle() {
    		return frtitle;
    	}
    	public void setFrtitle(String frtitle) {
    		this.frtitle = frtitle;
    	}
    	public String getFrname() {
    		return frname;
    	}
    	public void setFrname(String frname) {
    		this.frname = frname;
    	}
    	public String getRegdate() {
    		return regdate;
    	}
    	public void setRegdate(String regdate) {
    		this.regdate = regdate;
    	}
    	public int getFrcheck() {
    		return frcheck;
    	}
    	public void setFrcheck(int frcheck) {
    		this.frcheck = frcheck;
    	}
    	public String getFrcontent() {
    		return frcontent;
    	}
    	public void setFrcontent(String frcontent) {
    		this.frcontent = frcontent;
    	}
    	
    	
    	
    	
    	}
    


    0
  • 잡채밥냠냠
    168
    2018-10-29 19:42:54 작성 2018-10-29 19:44:24 수정됨

    매퍼랑 서비스 서비스 임플부터 잘못된거같네요 

    마이바티스에서 insert 리턴은 보이드가 아니라 int에요 1개 등록 성공하면 1 실패하면 0

    그거부터 잘못된거같네요.


    그리고 컨트롤러에서 

    freeBoardService.freeinsertBoardList(freeBoardVO);
    			

    이거 서비스 호출 전에 sysout으로freeBoardVO.get ~~으로 저 프리보드브이오에 들어있는거 다찍어보세요.

    0
  • 해킹해피
    141
    2018-11-02 19:13:14

    잡채밥냠냠 


    VO안에 sysout 찍어보니 안나오는 값들이 있네요 확인해보겠습니다.


    감사합니다!!


    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.