2012-06-08 7 views
16

Doğrulama için Grails 2.0.4 documentation, sayfanın üst kısmında hata mesajlarının nasıl görüntüleneceğini ve bir alanın geçersiz olması durumunda bir css sınıfının nasıl ekleneceğini gösterir, ancak hata mesajının nasıl görüntüleneceğini size bildirmez. alanlar kendilerini böyle bir şey:Grails'te, alanların yanındaki doğrulama hata mesajlarını nasıl görüntülerim?

 ----------------------- 
Name: |      | You must enter a name! 
     ----------------------- 

nasıl geçersiz alan için özel bir hata mesajı almak yoktur ve bir sonraki için olduğunu alanına göstermek?

+0

Bu, görünümünüzün HTML'sinde yer alır. Varsayılan oluşturma işlemini görmek için iskele şablonlarına bakın. Alan hatalarını dilediğiniz yerde görüntülemek için bunları değiştirebilirsiniz. Cevaplarda belirtilen alanlar eklentisi zaten bunu yapıyor. – aldrin

+0

Özel bir doğrulama oluşturmaya ve buraya özel bir hata iletisi göndermeye ilişkin ayrıntılı bir yanıt oluşturdum: http://stackoverflow.com/questions/14038905/how-do-i-create-a-custom -validator-ile-bir-özel-hata-mesaj-in-grails/14038908 # 14038908 – Spider

cevap

11

Aslında belgeler bu ne anlama geldiklerini olduğunu, sadece aşırı net değildir, bunun nasıl gösterir Bu alan için. Öyleyse HTML'yi buna göre yazmak size kalmış.

<input type="text" ... /> <g:if test="${bean.hasErrors}"><g:renderErrors bean="${book}" as="list" field="title"/></g:if> 

bunu istiyorum gibi bu kadar basit veya karmaşık olabiliyor ve genellikle grails eklentileri gibi süre, bu sadece biri olmadan yapacak kadar basit görünüyor ve İşaretleme üzerinde daha fazla kontrole sahip.

+0

Teşekkürler Gregg. Aradığım şey bu. –

+0

Tarla bir fasulyeye bağlı değilse ne olur? Bir varlık hakkında arama yapmak için sadece bir alan içeren bir gsp oluşturduğunuzu farz edelim ... orada nasıl hata gösterebilirim? – FrancescoDS

7

Bunu yapmak için Grails Fields plugin'u kullanıyorum ve bir işlem yapıyor.

Form alanı oluşturma için varsayılan şablonlar oluşturmayı kolaylaştırır. Mesela ben grails-app/views/_fields/default/_field.gsp aşağıdaki adres:

<%@ page defaultCodec="html" %> 
<div class="control-group${invalid ? ' error' : ''}"> 
    <label class="control-label" for="${property}${index ?: ""}">${label}</label> 
    <div class="controls"> 
     <%= widget.replace("id=\"${property}\"", "id=\"${property}${index ?: ""}\"") %> 
     <g:if test="${invalid}"><span class="help-inline">${errors.join('<br>')}</span></g:if> 
    </div> 
</div> 

Eğer hataları satır içi görüntülenir HTML görebileceğiniz gibi. Ben Jquery validation plugin ile devam öneriyoruz

<g:form controller="home" action="login" > 
    <f:field bean="user" property="email"/> 
    <f:field bean="user" property="password"> 
     <g:field type="password" name="${property}" value="${value}"/> 
    </f:field> 
</g:form> 
+0

Mükemmel! Alanlar eklentisini kesinlikle deneyeceğim. – Kimi

1

: İşte benim giriş formunun bir parçasıdır. Bununla ilgili birkaç Grails eklentisi var, ama biraz eski. Ayrıca, bu görevin başka bir eklenti kullanmak için oldukça basit olduğunu düşünüyorum.

<g:renderErrors bean="${book}" as="list" field="title"/> 

Eğer alan niteliğini belirtirseniz, yalnızca hata verecek:

4

Burada, kullanıcı adı alanına sarılmış bağlamdaki özel hata var. Bu istediğini yapacak.

<dt>User Id</dt> 
      <dd><g:textField name="username" value="${user?.username}"/> 
      <g:hasErrors bean="${user}" field="username"> 
        <g:eachError bean="${user}" field="username"> 
         <p style="color: red;"><g:message error="${it}"/></p> 
        </g:eachError> 
       </g:hasErrors> 
      </dd>