사용자가 게시글을 작성할 때 작성자명, 제목, 내용을 항상 입력해야 한다.

필수 입력이 되어야 하는 것이다.

모든 게시판들이 그런 것은 아니지만 본 예제는 모두 필수 입력이다.

즉, 사용자가 입력한 내용을 확인해서 내용이 있으면 서버로 보내서 저장하고,

그렇지 않으면 안내 메시지를 출력하고 입력하도록 해야 한다.



다음 코드와 같이 fn_formSubmit() 함수를 추가해 준다. 

3개의 필드를 필수로 했기 때문에 3개의 IF문이 사용되었다. 

form1은 폼테그의 이름(name)이고 폼 테그 내의 각 이름을 이용하여 값(value) 있는지 없는지 확인하고 있다.

focus메소드는 커서가 해당 입력상자에서 대기하도록 한다.

~~ 생략 ~~
<head>
<title>board3</title>
<script>
function fn_formSubmit(){
    var form1 = document.form1;
   
    if (form1.brdwriter.value=="") {
        alert("작성자를 입력해주세요.");
        form1.brdwriter.focus();
        return;
    }
    if (form1.brdtitle.value=="") {
        alert("글 제목을 입력해주세요.");
        form1.brdtitle.focus();
        return;
    }
    if (form1.brdmemo.value=="") {
        alert("글 내용을 입력해주세요.");
        form1.brdmemo.focus();
        return;
    }
    form1.submit();   
}
</script>
</head>
<body>
    ~~ 생략 ~~
        <a href="#" onclick="fn_formSubmit()">저장</a>
    </form>   
</body>
</html>

boardForm.jsp

저장 버튼도 기존에 바로 전송하도록(form1.submit()) 되어 있던 것을

코드와 같이 해당 함수에서 확인 후 처리 하도록 바꾸어 준다.


실제 사용에서는 사용자가 공백만 넣을 수도 있다.

따라서 길이를 비교하기 전에 공백을 제거하는 Trim 함수를 사용하면 좋다.

다만, 자바 스크립트의 기본 함수에는 없기 때문에 만들어 써야 한다. 

인터넷을 뒤져서 찾아보거나 패턴으로 만들어 보길 바라고,

차후 다룰 예정인 Jquery는 기본 함수로 제공되기 때문에 여기서는 넘어간다.


다음으로 글쓰기와 관련해서 수정해볼 내용은 board2에서 진행한 글쓰기와 수정을 하나의 컨트롤,

두 개의 서비스로 구현한 것을 다시 하나의 서비스로 구현해 보는 것이다. 

유사한 기능을 하는 서비스를 굳이 두 개로 사용하기 보다는

하나로 사용하는 것이 효율적이고 서비스 개념에도 맞는다고 생각한다.

다음과 같은 기존 코드에서 IF문을 서비스로 옮기면 된다.

@RequestMapping(value = "/board3Save")
public String boardSave(boardVO boardInfo) throws Exception {
    if (param.getBrdno()==null || "".equals(param.getBrdno()))
           boardSvc.insertBoard(boardInfo);
    else boardSvc.updateBoard(boardInfo);

    return "redirect:/board3List";
}

board3Ctr.java

public void insertBoard(boardVO param) throws Exception {
    if (param.getBrdno()==null || "".equals(param.getBrdno()))
           sqlSession.insert("insertBoard3", param);
    else sqlSession.update("updateBoard3", param);
}

board3Svc.java

마지막으로 위와 같이 수정했다면 updateBoard 서비스는 삭제해 준다.





+ Recent posts