Table of Content
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>