2013-07-28 4 views
0

양식 입력 필드에 html 인코딩을 사용합니다. 새 사용자의 이름을 삽입 할 수있는 새 사용자 개체를 만드는 양식이 있습니다. 스크립트 입력에서이 입력 필드를 막으려면 아래 나열된 save() 액션에서 encodeAsHTML()을 수행하십시오. 속성이 Grails로 인코딩 된 HTML 일 때 도메인 클래스의 유효성을 올바르게 검사하는 방법?

문제 : 가 입력 한 이름은 1 : Schäfchen 2.이 유효성 검사에 실패 할 \ auml로 변환 3. HTML 인코딩 아래에있는 내 유효성 검사 규칙 후 제대로 검증 할 것

어떻게 html로 인코딩 된 이름의 유효성을 올바르게 검사 할 수 있습니까?

주어진 다음의 Grails의 클래스 : 내 UserController.groovy에서

class User { 
    String name 
    static constraints = { 
    name blank: false, validator: { val, obj ->      
       Pattern pattern = Pattern.compile("[a-zA-Z0-9äöüßÄÖÜ\\- ]+") 
     pattern.matcher(val).matches() 
    } 
    } 
} 

: 만 GSP 뷰에서

dev save() { 
    def name = params?.name?.encodeAsHTML() 
    def user = new User() 
    user.name = name 
    user.save() 
} 
+0

왜 당신은 도메인에 HTML로 데이터를 인코딩하는? 페이지에 표시 할 때 항상 /로 인코딩해야합니다. –

+0

몇 가지 샘플 코드를 제공 할 수 있습니까? 언제 encodeAsHTML()을 사용하고 언제 decodeHTML()을 사용합니까? – confile

답변

1

당신은 encodeAsHTML이란을 (사용해야합니다).

은 참조 : http://grails.org/doc/latest/ref/Tags/each.html

<tbody> 
<g:each status="i" in="${itemList}" var="item"> 
    <!-- Alternate CSS classes for the rows. --> 
    <tr class="${ (i % 2) == 0 ? 'a' : 'b'}"> 
    <td>${item.id?.encodeAsHTML()}</td> 
    <td>${item.parentId?.encodeAsHTML()}</td> 
    <td>${item.type?.encodeAsHTML()}</td> 
    <td>${item.status?.encodeAsHTML()}</td> 
</tr> 
</g:each> 
</tbody> 
+1

이것을 반복하는 대신 html을 기본 인코딩으로 설정할 수 있습니다. 'grails.views.default.codec = "html"' –

+1

당신의 솔루션으로 일부 플러그인에 문제가 생길 것입니다. –