2009-07-07 10 views
2

私のフォームの検証はうまくいきますが、メッセージはフィールドラベルではなくJSFコンポーネント名を使用します。たとえば、フィールドの件名があり、空のときに表示されるエラーメッセージは次の行に沿ったものです。Seam Richfacesフォームのバリデーション

UIComponent:contactBean.firstNameは空にできません。

マイフォーム:

<div class="field"> 
<s:decorate id="firstNameDecorate" template="edit.xhtml"> 
    <ui:define name="label">#{messages['user.firstName']}</ui:define> 
    <h:inputText id="firstName" required="true" value="#{contactBean.firstName}"> 
     <a:support event="onblur" reRender="firstNameDecorate"/> 
    </h:inputText> 
</s:decorate> 

私の編集テンプレート:検証は私がしたいだけのように動作し

<div class="entry"> 
    <s:label styleClass="label #{invalid?'errors':''}"> 
     <ui:insert name="label"/> 
     <s:span styleClass="required" rendered="#{required}">*</s:span> 
    </s:label> 
    <span class="input #{invalid?'errors':''}"> 
     <s:validateAll> 
      <ui:insert/> 
     </s:validateAll> 
    </span> 
    <s:message styleClass="error errors"/> 
</div> 

、エラーメッセージが右に、少なくとも値(設定されていますバリデーターは、ContactBeanクラスのフィールドのアノテーションが単純なので、構成がとても簡単です。私はちょうどそれを磨くと右の値を取得したいと思い

は、例えばそこに表示される:

ファーストネームは空にすることはできません。

最後の部分はajax、onblurですが、実際には何もしません。それは私がある時点で取り組んでいるマイナーな問題です。

ContactBean.java

package com.walterjwhite.seamCore.model; 

import java.io.Serializable; 

import org.hibernate.validator.Email; 
import org.hibernate.validator.NotEmpty; 

import org.jboss.seam.annotations.AutoCreate; 
import org.jboss.seam.annotations.Name; 

@AutoCreate 
@Name("com.walterjwhite.seamCore.model.contactBean") 
public class ContactBean 
    implements Serializable 
{ 
    protected String firstName; 
    protected String lastName; 
    protected String emailAddress; 
    protected String subject; 
    protected String message; 

    public String getFirstName() 
    { 
     return firstName; 
    } 

    public void setFirstName(String firstName) 
    { 
     this.firstName = firstName; 
    } 

    @NotEmpty 
    public String getLastName() 
    { 
     return lastName; 
    } 

    public void setLastName(String lastName) 
    { 
     this.lastName = lastName; 
    } 

    @NotEmpty 
    @Email 
    public String getEmailAddress() 
    { 
     return emailAddress; 
    } 

    public void setEmailAddress(String emailAddress) 
    { 
     this.emailAddress = emailAddress; 
    } 

    @NotEmpty 
    public String getSubject() 
    { 
     return subject; 
    } 

    public void setSubject(String subject) 
    { 
     this.subject = subject; 
    } 

    @NotEmpty 
    public String getMessage() 
    { 
     return message; 
    } 

    public void setMessage(String message) 
    { 
     this.message = message; 
    } 
} 

おかげで、

ウォルター

+0

エンティティBeanクラスを確認できますか? – Drew

答えて

2

それは実際には非常に簡単です。あなたがしなければならないので、同様に、inputTextコンポーネントのラベル属性を設定している:これは、メッセージを表示するときにJSFのエラーメッセージが使用するものです

<h:inputText id="firstName" label="#{messages['user.firstName']}" required="true" value="#{contactBean.firstName}"> 
    <a:support event="onblur" reRender="firstNameDecorate"/> 
</h:inputText> 

。 s:labelタグは画面上にラベルをレンダリングするだけで、入力コンポーネントのラベルは設定しません。

こちらがお役に立てば幸いです。

+0

ありがとう、私はあとで試してみます。 –

+0

もう一度ありがとうございました。今はとても可愛い。 ウォルター –

関連する問題