-
스프링4.0 - 뷰 규현 : 커스텀태그 정리웹프로그래밍/spring 2018. 7. 21. 16:32
- 메시지 출력
기본 설정법
먼저 messageSource를 빈으로 등록한다.
message 패키지의 위치한 error, label.properties 파일
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>message.error</value>
<value>message.label</value>
</list>
</property>
<property name="defaultEncoding" value="UTF-8" />
</bean>
- 메시지 출력 커스텀 태그
<spring:message> 사용예시
-label.properties
email=이메일
password=암호
login.form.title=로그인 폼
login.form.login=로그인
login.form.help=이메일/암호로 yuna@yuna.com/yuna 입력 테스트
login.form.type=로그인 유형
greeting={0} 회원님, {1} //{숫자}로 변하는 부분을 명시
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<input type="submit" value="<spring:message code="login.form.login" />">
</form:form>
<ul>
<li><spring:message code="login.form.help" /></li>
</ul>
@RequestMapping("/hello")
public String hello(Model model, @RequestParam(value = "name", required = false) String name) {
model.addAttribute("me", name);
model.addAttribute("greeting", "안녕하세요");
return "hello";
}
<spring:message code="greeting" arguments="${me}, ${greeting}" />
- 코드에 해당하는 메시지가 없을 경우 익셉션 발생
text속성으로 기본 메시지를 입력한다.
<spring:message code="no_code" text="코드가 없습니다."/>
- Escape 속성 값 지정
-HTML에서 특수문자가 포함될 경우 ->
htmlEscape="false"
-자바 스크립트에서 <spring:message> 태그가 생성한 문자열을 변수 값으로 사용할때 ->
<spring:message code="login.form.help" javaScriptEscape="true"/>
- 메시지를 출력하지 않고 request나 session 같은 객체에 저장
var 속성은 <spring:message>가 생성한 메시지를 저장할 변수 이름을 지정한다.
scope 속성은 메시지를 저장할 범위로 page, request, session, application 등이 있고 기본 값은 page이다.
<spring:message code="login.form.help" var="label" scope="request"/>
${label}:<input type=.../>
- 폼 관련 커스텀 태그
설정
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
태그 종류
<form:form> - 폼 생성시 사용
<form:form commandName="커맨드 객체 이름"> - 기본 값은 "command", action, enctype, method
<form:input> - text 타입
<form:password> - password 타입
<form:hidden>
<form:select>
<form:options>
<form:option>
@ModelAttribute("loginTypes")
protected List<String> referenceData() {
List<String> loginTypes = new ArrayList<String>();
loginTypes.add("일반회원");
loginTypes.add("기업회원");
loginTypes.add("헤드헌터회원");
return loginTypes;
}
<label for="loginType"><spring:message code="login.form.type" /></label>
<form:select path="loginType" items="${loginTypes}" />
<form:select path="loginType">
<option value="">--- 선택하세요 ---</option>
<form:options items="${loginTypes}"/>
</form:select>
public class Code {
private String code;
private String label;
public Code(String code, String name) {
this.code = code;
this.label = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getLabel() {
return label;
}
@ModelAttribute("jobCodes")
public List<Code> jobCodes() {
return Arrays.asList(
new Code("1", "운동선수"),
new Code("2", "프로그래머"),
new Code("3", "예술가"),
new Code("4", "작가")
);
}
<label for="jobCode">직업</label>:
<form:select path="jobCode" >
<option value="">--- 선택하세요 ---</option>
<form:options items="${jobCodes}" itemLabel="label" itemValue="code" />
</form:select>
<form:checkboxes>
@ModelAttribute("favoriteOsNames")
public List<String> favoriteOs() {
return Arrays.asList("윈도우XP", "윈도우7", "윈도우8", "맥OS", "우분투");
}
public class MemberRegistRequest {
private String[] favoriteOs;
public String[] getFavoriteOs() {
return favoriteOs;
}
public void setFavoriteOs(String[] favoriteOs) {
this.favoriteOs = favoriteOs;
}
}
<form:checkboxes> 태그는 favoriteOsNames 리스트 객체 안에 값을 출력한다.
웹 브라우저에서 체크한 속성 값만 폼 태그로 전달된다.
<form:label path="favoriteOs">선호 OS</form:label>
<form:checkboxes items="${favoriteOsNames}" path="favoriteOs"/>
<form:errors path="favoriteOs" />
<form:checkbox>
웹 브라우저에서 체크하면(checked) -> true
체크 안하면(unchecked) - > false
를 allowNoti 속성 값으로 전달
public class MemberRegistRequest {
private boolean allowNoti;
public boolean isAllowNoti() {
return allowNoti;
}
public void setAllowNoti(boolean allowNoti) {
this.allowNoti = allowNoti;
}
}<form:checkbox path="allowNoti" label="이메일을 수신합니다."/>
<form:radiobuttons>
@ModelAttribute("tools")
public List<String> tools() {
return Arrays.asList("이클립스", "인텔리J", "넷빈즈", "Vim");
}
<form:label path="tool">주로 사용하는 개발툴</form:label>
<form:radiobuttons items="${tools}" path="tool" />
<form:radiobutton>
<form:radiobutton path="tool" value="da" label="da"/>
<form:textarea>
<form:label path="etc">기타</form:label>
<form:textarea path="etc" cols="20" rows="3"/>
<form:errors>
2018/07/17 - [웹프로그래밍/스프링 4.0] - 스프링4.0 - Validator / Errors / BindingResult로 객체 검증 : 에러 메시지
<spring:htmlEscape>
defaultHtmlescape 컨텍스트 파라미터를 사용하여 웹 어플리케이션 전반에 걸쳐서 HTML의 특수 문자를 엔티티 레퍼런스로 치환할지 여부를 결정한다.
만약 각 JSP별로 특수 문자 치환 여부를 설정하려면 아래 코드를 JSP페이지에 입력한다.
<spring:htmlEscape defaultHtmlEscape="true"/>
'웹프로그래밍 > spring' 카테고리의 다른 글
스프링 - DispatcherServlet과 web.xml 설정 (0) 2018.12.01 스프링 4.0 - myBatis 연동 (0) 2018.08.02 스프링4.0 - MVC : 뷰 구현 (0) 2018.07.21 스프링4.0 - XML/JSON 변환처리 (0) 2018.07.19 스프링4.0-WebApplicationContext 계층 : 다수의 DispatcherServlet 설정 (0) 2018.07.18