Spring Boot – JSTL form

By | 2023년 2월 9일
Table of Contents

Spring Boot – JSTL form

Spring Boot JSTL 테그중 form 테그에 대해 설명합니다.

@Controller

신규 데이타를 입력하기 위해 new SearchCompanyResponseDto() 와 같이 빈 데이타를 전송합니다.
CompanyDivision 은 Enum 입니다.

@Controller
@RequiredArgsConstructor
public class CompanyIndexController {
    @GetMapping("/admin/company/create")
    public String create(HttpServletRequest request, ModelMap model) {
        model.addAttribute("company", new SearchCompanyResponseDto());
        model.addAttribute("companyDivision", CompanyDivision.values());
        return "/admin/companyModify";
    }
}

JSP

사용법이 직관적이어서 따로 설명은 필요없을 듯 합니다.
DTO 에 값이 있는 경우 자동설정까지 해줍니다.

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
......
<%--@elvariable id="company" type="kr.pe.skyer9.warehouseweb.external.dto.response.SearchCompanyResponseDto"--%>
......
<form:form id="frm" name="frm" modelAttribute="company">
<table>
    <tr>
        <td>ID</td>
        <td>
            ${company.companyId}
            <form:hidden path="companyId" />
        </td>
    </tr>
    <tr>
        <td>구분</td>
        <td>
            <form:select path="companyDivision">
                <option value=""></option>
                <form:options items="${companyDivision}" itemValue="name" itemLabel="description" />
            </form:select>
        </td>
    </tr>
    <tr>
        <td>업체 로그인ID</td>
        <td>
            <form:input path="companyLoginId" />
        </td>
    </tr>
    <tr>
        <td>업체명</td>
        <td>
            <form:input path="companyName" />
        </td>
    </tr>
    <tr>
        <td>사용여부</td>
        <td>
            <form:radiobutton path="isUsing" value="Y"/> 사용
            <form:radiobutton path="isUsing" value="N"/> 사용안함
            <input type="button" value="사용여부 저장" onclick="jsSaveIsUsing(${company.companyId})" />
        </td>
    </tr>
</table>
    <input type="submit" value="저장" />
    <input type="button" value="취소" onclick="jsBack()" />
</form:form>

Controller

DTO 를 설정해 주면 값이 자동으로 입력된다.

    @GetMapping("/admin/company/modify")
    public String modify(HttpServletRequest request, HttpServletResponse response, ModelMap model, @RequestParam(value = "id") Long companyId) throws IOException {
        SearchCompanyResponseDto dto = service.get(companyId);
        model.addAttribute("company", dto);
        model.addAttribute("companyDivision", CompanyDivision.values());
        return "/admin/companyModify";
    }

태그 목록

<form:password>
<form:form>
<form:input>
<form:textarea>
<form:checkbox>
<form:checkboxes>
<form:radiobutton>
<form:radiobuttons>
<form:select>
<form:hidden>
<form:label>
<form:button>

답글 남기기