Validate 종류들

S/Spring 2014. 6. 21. 12:53

5.7.4.3 Configuring a JSR-303 Validator for use by Spring MVC

With JSR-303, a single javax.validation.Validator instance typically validates all model objects that declare validation constraints. To configure a JSR-303-backed Validator with Spring MVC, simply add a JSR-303 Provider, such as Hibernate Validator, to your classpath. Spring MVC will detect it and automatically enable JSR-303 support across all Controllers.

The Spring MVC configuration required to enable JSR-303 support is shown below:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <!-- JSR-303 support will be detected on classpath and enabled automatically -->
    <mvc:annotation-driven/>
    
</beans>

				

With this minimal configuration, anytime a @Valid @Controller input is encountered, it will be validated by the JSR-303 provider. JSR-303, in turn, will enforce any constraints declared against the input. Any ConstaintViolations will automatically be exposed as errors in the BindingResult renderable by standard Spring MVC form tags.

 

참조 : http://docs.spring.io/spring/docs/3.0.0.RC3/reference/html/ch05s07.html

 

javax.validation.constraints.Digits

  • javax.validation.constraints.Min
  • javax.validation.constraints.Max
  • javax.validation.constraints.NotNull
  • javax.validation.constraints.DecimalMax
  • javax.validation.constraints.DecimalMin
  • javax.validation.constraints.Pattern
  • javax.validation.constraints.Null
  • javax.validation.constraints.Size
  •  

    org.hibernate.validator.constraints.URL

    org.hibernate.validator.constraints.NotEmpty

    org.hibernate.validator.constraints.NotBlank

    org.hibernate.validator.constraints.Length

    org.hibernate.validator.constraints.Email

    org.hibernate.validator.constraints.CreditCardNumber

     

     

     

    설정

    트랙백

    댓글

    패턴 모음집

    P 2014. 6. 21. 12:51

    telephone - pattern="([0-9]{3}) [0-9]{3}-[0-9]{4}

     

     

    'P' 카테고리의 다른 글

    perf  (0) 2017.04.26
    이클립스, 소스트리 사용시 주의할 점  (0) 2015.03.18
    Code Convention  (0) 2014.07.04

    설정

    트랙백

    댓글

     

    출처 : http://blog.elzapp.com/2010/07/07/round-floor-and-ceiling-in-expression-language.html

    Expression Language makes working with Java Server Pages a slightly less pain in the behind. But, its functionality is very limited, there is for instance no way to round off a number, neither as floor, ceiling or to the closest integer

    Floor(foo) -> ${foo - ( foo % 1 ) }
    Ceiling(foo) -> ${foo + ( 1 - (foo%1)) % 1}
    Round(foo) -> ${foo +0.5 - ((foo+0.5) % 1) }

    This still gives you a float, so to get an integer, you must either use the <fmt:formatNumber>-tag

    <fmt:formatNumber value="${foo - ( foo % 1 ) }" var="fooAsInt" maxFractionDigits="0"/>

    (really, this returns a string, representing the number without the decimals. But as EL automatically casts between strings, floats and integers, this is mostly OK.)

    or you can hack it using fn:replace():

    ${fn:replace(foo - ( foo % 1 ),'.0','') }

    (Yes, you may use singlequotes for strings in EL, even though this is supposed to be Java….)

     

     

     

    설정

    트랙백

    댓글

    Request processing failed; nested exception is org.apache.tiles.definition.DefinitionsFactoryException: I/O Error reading definitions.] with root cause

     

    이 에러의 대처법은 아직은 잘 모르겠지만 혹시 이 에러가 뜬다면

    1. 인터넷 연결

    2. Tiles

    3. Mybatis 매퍼 xml 부분 논리적 오류거나 띄어쓰기 등등..

    4. Spring-Security

    5. dispatcher-servlet.xml 부분 Controller??

     

    1, 2, 3, 4일 경우도 있었던거 같다.

    5번은 명확하지 않아서 이런 순으로 점검을 해보는 것이 좋을 거 같다.

     

    3번 같은 경우 왠만하면 ctrl + shift + f 단축키 정렬을 mapper.xml 부분에 하지 말하야한다.

    query 문이 난잡하게 되서 에러를 유발할 수 있을 수 있다.

     

     

    설정

    트랙백

    댓글

    <body ng-controller="MainCtrl" ng-init="init()">
     
    <div ng-init="init('Blah')">{{ testInput }}</div>
    </body>

    app.controller('MainCtrl', ['$scope', function ($scope) {
      $scope.testInput = null;
      $scope.init = function(value) {
        $scope.testInput= value;
      }
    }]);

    Here's an example.

     

    ng-init가 잘 작동되지 않으면 이렇게 해보는 게 좋을 듯하다.

    아님 이렇게 초기화 값을 init에 집어넣는 것도 괜찮은 듯

     

    http://stackoverflow.com/questions/19981627/setting-scope-property-with-ng-init-doesnt-work

     

    설정

    트랙백

    댓글

    confirm 함수가 자바스크립트에서 내장되어 있다.

     

    var txt;;
    var r = confirm("Press a button!");
    if (r == true) {
        txt = "You pressed OK!";
    } else {
        txt = "You pressed Cancel!";
    }

    confirm("Press a button!\nEither OK or Cancel.");

    설정

    트랙백

    댓글

    Here’s another handy stuff I found on Spring MVC, if you have an unknown number of elements on your form (say a fruit basket), you can bind them into a List with @RequestParam annotation.

    Let’s say this is our form:
    spring-bind-list

    Each text input has the same name fruits:

    1
    2
    3
    4
    5
    6
    <form method="post">
      Fruit 1: <input type="text" name="fruits"/><br/>
      Fruit 2: <input type="text" name="fruits"/><br/>
      Fruit 3: <input type="text" name="fruits"/><br/>
      <input type="submit"/>
    </form>

    On your controller’s handler method, you can obtain the list of all fruit names by binding it like this:

    1
    2
    3
    4
    @RequestMapping(value = "/", method = RequestMethod.POST)
    public String addFruits(@RequestParam("fruits") List<String> fruits) {
      // ...
    }

    The order of fruit names added to the list will be the same as the order of your form text inputs.

     

    참조 : http://gerrydevstory.com/2013/11/14/binding-a-list-request-parameter-on-spring-mvc/

    설정

    트랙백

    댓글

    I had a similar need and had the same problem accessing the scope using angular.element. I was was able to solve it as follows though:

    In your main/parent controller do something like this:

    $scope.food = 'Mac & Cheese';
    window.$windowScope = $scope;
    $window.open('views/anotherWindow.html', '_blank','menubar=yes,toolbar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes,personalbar=yes');

    Then in the child window controller you can access $windowScope like this:

    $scope.parentWindow = window.opener.$windowScope;
    console.log($scope.parentWindow.food);

    An alternative to putting data directly into the scope would be to use $window scope to broadcast and/or emit events, which is the preferred way of cross-controller communication in angular.

     

     

    http://stackoverflow.com/questions/17007939/accessing-parent-window-angular-scope-from-child-window

    설정

    트랙백

    댓글

    2014 Mobile Start Up Korea

    M/Me 2014. 6. 1. 20:31

    한강진역 2번 출구에 있는 블루스퀘어, 모바일 창업 코리아에 갔다왔다.

    처음 들어갔을 때, 경비원들이 너무 많아서 여기가 맞나 싶을 정도로 의심을 했었는 데 잘 찾아온건 맞았다.

    진짜 경비원들이 이곳저곳에 배치되어있어서 깜짝 놀랄 정도였으니;;;;

     

    이런데는 처음 가는 거라 호기심에 가득차있었는 데, 듣고나니 정말로 대단한 사람은 많다.

     

     

     

     

     

    거기서 배운건 요약하자면 이렇다.

    창업을 한다면

    관찰 - 연결 - 실행 순으로 하라는 것이다.

     

    그리고 되도록이면 해당 기업과 차이점을 고려하면서 아이디어를 구축하는 것이 성공 가능성이 높고,

    팀 워크, 아이디어에 대한 멘토링을 통해 단단하게 다져야한다.

    ( 요즘은 아이디어만으로는 안된다한다. )

    중요한건 고객의 니즈를 잘 파악하여 실용 가능성이 있는 지도 있고, 한 분야에 특화되는 것도 좋은 방법 일 수도 있다.

    우리가 가지고 있는 리소스를 상당히 적기 때문에 어떤거에 몰두해서 확실하게 파는 것이 중요하다고 한다.

    중요한게 많네 ^^;;

     

    - 해당 아이디어가 있으면 있는 지 파악하고 바로 실행하는 것도 중요. (뺏길 수 있으니깐 ^^)

     

    'M > Me' 카테고리의 다른 글

    해킨토시 설치 완료  (0) 2014.05.07
    테일즈위버  (0) 2011.10.13
    첫 글이자 소개  (0) 2011.10.12

    설정

    트랙백

    댓글

     <form:form class="form-horizontal" action="${ boardType }/article/write.do" method="post" commandName="articleView" >
      <div class="form-group">
       <label for="inputTitle" class="col-md-1 control-label">제목 : </label>
       <div class="col-md-11">
        <form:input path="title" class="title form-control"
         id="inputTitle" placeholder="제목" />
       </div>
      </div>  
      <div class="form-group">
       <form:textarea id="editor" class="ckeditor form-control" path="contentView" />
      </div>
      <div class="form-group">
       <input class="btn" type="submit" value="확인" /> <a
        href="${ boardType }/board.do?${ pagination }&pg=${ pagination.currentPage}"
        class="btn">취소</a>
      </div>
      
      <form:hidden path="writerId" />
      <form:hidden path="boardCodeId" />
      <form:hidden path="authId"/>
     </form:form>

     

    이렇게 form 태그가 있다

    여기서 에러가 발생해서 <!-- -->로 주석 처리하면서 에러를 찾으면 효과가 없다.

    왜냐 spring form 태그 라이브러리가 <!-- --> 주석 처리 안 까지 처리를 하기때문에 에러가 계속 발생하게 되므로 에러 부분을 찾으려면 해당 폼 태그 부분을 지우면서 확인하는 수 밖에 없다.

    설정

    트랙백

    댓글