'JavaServer Faces'에 해당되는 글 5건

  1. 2009/01/07 JSF의 변환(Conversion)과 검증(Validation)이란 무었인가?
  2. 2009/01/07 Java Server Faces(JSF), Facelets and Web 2.0 for SVG
  3. 2009/01/06 JavaServer Faces, Ajax, Flash: 차세대 사용자 인터페이스
  4. 2009/01/05 JSF에서 request.getContextPath()를 사용할때
  5. 2007/01/29 JSF(JavaServer Faces) in Action

JSF의 변환(Conversion)과 검증(Validation)이란 무었인가?

|

JavaServer Faces에서는 입력되는 값들을 변환(Conversion)하고 검증(Validation)할 수 있는 표준적인 방안을 제공하고 있습니다.

이 방안을 통하여 여러분들은 언제나 쉽고 빠르게, 그리고 가장 중요한 점은 동일한 형태의 변환이나 검증을 할 경우 미리 만들어 놓은 검증기나 변환기를 재사용(Reuse)하여 원하는 어플리케이션을 보다 쉽고 빠르게 구축하실 수 있습니다.

이에따라 간략하게 JSF의 변환과 검증에 대하여 살펴보고자 합니다. 본 문서는 IBM developersWors의 JSF for nonbelievers: JSF conversion and validation라는 자료를 바탕으로 작성하였으며, Apress의 Pro JSF and AJAX란 책도 일부 참고하여 작성하였습니다.

 

여기서 중요한 점은 변환이란 무었이고 검증이란 무었인가?라는 것입니다.

변환이란 다음과 같은 것을 의미합니다.

  • String 값을 java.util.Date 객체로 변환하는 것입니다.
    즉 "20090107"이란 String 객체를 Date("20090107") 객체로 변환하는 것을 객체변환이라고 합니다.
  • String 값을 double으로 변환하는 경우도 있습니다.
    예를들어 "3.14159"란 String을 double pi = 3.14159로 사용하고 싶다면 타입변환을 하여야 합니다.

이러한 예를 통하여 변환이란 결국 객체를 다른 객체로 변환하거나, 객체를 다른 타입으로 변환하거나, 타입을 객체로 변환하는 것을 의미합니다.

 

그렇다면 검증이란 무었을 의미할까요? 예를 통하여 확인하여 보면 다음과 같습니다.

  • java.util.Date가 "yyyy-MM-dd HH24"와 같은 형식(format)인가? 를 확인하는 작업이 검증하는 작업입니다.
  • float의 값이 3.0에서 4.0 사이인지 확인하여 한다면 검증하여야 합니다.

이와 같이 검증은 무었인가의 값의 형식(format)이나 범위 등을 확인하는 작업입니다.

만약 검증하여야 할 대상의 형식이 복잡하다면 정규식(Regular Expression)을 이용하여 검증하실 수 있으며, 각 조건에 맞는 검증기 클래스(Validator Class)를 작성하실 수 있습니다.

 

변환(Conversion)과 검증(Validation)을 이해하였다면 JSF의 생명주기(Lifecyle)에 대하여 살펴볼 필요가 있습니다.

이 단계를 살펴보면 "Apply request values" 단계 후에 "Process Validations" 단계를 거치게 되어 있습니다. 이는 JSF를 바탕으로 구현된 어플리케이션의 경우 기본적으로 입력받은 값들을 검증하는 단계를 거치도록 되어 있다는 것입니다.

변환과 검증의 가장 중요한 목적은 모델을 업데이트하기 전에 값들이 정확한지 보장하기 위한 것입니다.

따라서 여러분들이 JSF를 사용하여 검증 및 변환을 한다면, JSF는 여러분들이 정의한 변환 규칙에 맞게 변환되는지 확인하고 변환할 것이며, 여러분들이 만든 검증 규칙에 맞는지 확인할 것입니다. 뭐 다른 Web 관련 UI Framework도 이런 규칙을 따르고 있잖아? 라고 말한다면 그 지적은 맞습니다. 하지만 JSF의 검증 및 변환에 관련된 라이프사이클을 조금 더 자세히 살펴본다면 약간 더 진보적이라는 것을 확인할 수 있습니다.

 

상기 그림에서도 나와 있듯이 JSF의 생명주기에서 "Apply Request Values" 단계에서 기본적인 변환이 일어납니다. 아울러 사용자가 정의한 변환도 이 때 일어납니다. 이는 다른 UI 관련 프레임웍과 차별화된 부분입니다.

JSF에서는 기본적으로 요청된 값들을 적용할때 값들을 객체로 변환하거나 지정된 타입으로 변환합니다. 거의 모든 다른 UI 프레임웍에서는 그냥 String 값인 상태로 전달되지만 JSF는 비즈니스 로직에 맞는 모델에 맞는 객체나 타입으로 변환시켜줌으로써 모델의 들어가는 값의 안전성과 신뢰성을 높입니다.

이는 중요한 사항입니다. 여러분은 아직도 HttpServletRequest 객체에서 request.getParameter("XXX");를 통해서 View에서 전달된 값을 일일이 받아서 사용하거나, Spring MVC를 사용한다면 조금 더 향상은 되었겠지만 거의 비슷한 방법으로 View에서 전달된 값을들 Business Logic이 담긴 Controller와 같은 클래스로 넘기고 있을 것입니다.

Spring Framework을 사용한다고 하여 값의 변환을 자동으로 시켜주지는 않습니다. 이것이 다른 UI 프레임웍과 JSF의 가장 근본적인 차이점중에 하나입니다.

아울러 JSF는 변환 단계 후 검증 단계를 실시합니다.

이 검증 역시 표준적인 검증과 사용자 정의 검증을 통하여 값들을 형식이나 범위등을 확인합니다. 검증할 범위가 특이하거나 일반적이지 않은 형식을 검증하여야 할 경우에는 사용자 정의 검증을 할 수 있습니다.

한가지 주의하여야 할 점은 javax.faces.component.UIInput을 상속받은 javax.faces.component.html.HtmlInputText나 javax.faces.component.UISelectOne 컴포넌트의 경우 immediate라는 속성을 true라고 지정하면 아래 그림과 같이 JSF의 생명주기가 바뀝니다.

immediate 속성의 기본값은 false인데, true로 설정하면 상기 그림과 같이 "Apply Request Values"에서 변환과 검증을 합니다.

immediate 속성에 대한 자세한 내용은 다음에 다루겠습니다. 당근 값을 즉시 전달하는데 사용하는 옵션입니다.

 

다음에는 JSF의 변환에 대하여 자세하게 알아보겠습니다. 먼저 확인하고 싶으신 분은 IBM developersWors의 JSF for nonbelievers: JSF conversion and validation라는 자료를 보시기 바랍니다. 설명이 참 잘되어 있습니다.

감사합니다. ;-)

Trackback 0 And Comment 0

Trackback http://blog.java2game.com/trackback/201 관련글 쓰기

Java Server Faces(JSF), Facelets and Web 2.0 for SVG

|
JSF(JavaServer Faces)의 경우 Rederer 를 바꿀 수 있습니다. Rederer를 바꿀 수 있다는 의미는 하나의 컨텐츠를 다양한 형태로 바꿀 수 있다는 것을 의미합니다.
즉  하나의 HTML 문서를 MS Word로 바꾸거나 PDF로 바꿀 수 있다는 거죠.

최근 SVG에 대한 관심이 높아지면서 JSF + SVG에 대한 글이 있어서 공유차원에서 올립니다. 이미 Adobe Flex와 연동이 되고 있습니다. 나중에 한번 다루겠습니다.

개인적으로는 Flex나 SVG와 같은 벡터 그래픽을 Rich UI로 사용하는 것에 관심이 많습니다. 앞으로 점 더 연구해볼 가치가 있을 것 같습니다. :-)

출처: https://www.dimis.fim.uni-passau.de/~doeller/research_projects/sw_internship/Pfnuer/Praktikum.pdf


Trackback 0 And Comment 0

Trackback http://blog.java2game.com/trackback/200 관련글 쓰기

JavaServer Faces, Ajax, Flash: 차세대 사용자 인터페이스

|
Oracle의 기술백서중에서 "JavaServer Faces, Ajax, Flash: 차세대 사용자 인터페이스"라는 좋은 글이 있어서 공유차원에서 올립니다.

몇년전부터 JSF를 간혹 사용하여 오다가 최근 제가 맡은 프로젝트에서 본격적으로 활용하고 있습니다.

앞으로 JSF에 대한 좋은 글들을 올리겠습니다.

그럼 우선 Oracle의 문서부터 한번 살펴보시죠 :-)


Trackback 0 And Comment 0

Trackback http://blog.java2game.com/trackback/198 관련글 쓰기

JSF에서 request.getContextPath()를 사용할때

|
JSF(JavaServer Faces)로 개발을 하다보면 JSP(JavaServer Pages)에서 가장 많이 사용하였던 request.getContextPath()를 EL(Expression Language)로 어떻게 표기해야 할지 막막할때가 있습니다.

특히 JSF의 경우 EL을 바탕으로  UI 관련 개발을 하기 때문에 EL에 익숙하지 않으신 분들의 경우 더더욱 그렇습니다.

가장 많이 사용되는 EL 중에 다음과 같은 표기식이 있습니다.

#{facesContext.externalContext.requestContextPath}

HttpServletRequest.getContextPath()와 같은 의미입니다.

이 외에도 facesContext의 externalContext에는 SessionMap이나 RequestMap과 같은 유용한 객체들이 많습니다. 한번씩 확인해보시기 바랍니다.

혹시 EL을 쓰시면서 궁금하신 부분들이 있으면 댓글달아주시면 최대한 알려드리겠습니다. ;-)
Trackback 0 And Comment 0

Trackback http://blog.java2game.com/trackback/197 관련글 쓰기

JSF(JavaServer Faces) in Action

|

- 책제목: JSF(JavaServer Faces) in Action

- 지은이: 키토 D 맨; 이태상 옮김

- 출판사: 에이콘

- 서평

JSF가 세상에 나온지는 오래되었으나 진정으로 JavaEE관련 UI 관련 기술로 많이 확산되고 있지는 못하다.

이책 역시 JSF의 확산을 도와주는 역활을 못하고 있다고 생각한다.


실제적인 내용보다는 API에 가까운 내용들로 채워져 있다.


Step-by-Step으로 JSF를 이해하고 이를 Spring Framework와 연동하여 Backing Bean등을 생성하는 내용들이 보강되어 나온다면 아마도 JSF에 대한 이해가 높아지지 않을까 생각한다.


언제 기회가 되면 JSF의 실제적인 활용과 이해라는 주제로 AJAX 스타일의 UI 구성에서 Spring Framework를 이용하여 이를 효과적으로 Control 단으로 연동시키는 부분들을 주제로 책을 한권 쓰고 싶다.

JSF 화이팅~

Trackback 0 And Comment 0

Trackback http://blog.java2game.com/trackback/16 관련글 쓰기

prev | 1 | next