Two form fields validation with p:ajax event

UI Components for JSF
Post Reply
laurentw
Posts: 40
Joined: 17 Jun 2011, 17:40

21 Jun 2011, 18:34

Hi,

I tried to validate two fields with a listener. It's working well after submit of the form : the faces error message is rendered.

But, it's not working after the blur event, like for any standard validation.

This is the part of the view :

Code: Select all

<p:fieldset style="margin-top:15px;">
					<h:panelGrid columns="3" cellpadding="4"
						columnClasses="form_col1,form_col2,form_col3" id="email_group">
						<f:event listener="#{inscription.validateEmail}" type="postValidate" />
						<h:outputLabel value="#{msgs.email}" />
						<p:inputText id="email" value="#{inscription.email1}" label="#{msgs.email}">
							<p:ajax event="blur" update="msg_email" />
						</p:inputText>
						<p:message for="email" id="msg_email" />
						<h:outputLabel value="#{msgs.confirmMail}" />
						<p:inputText id="email2" value="#{inscription.email2}" label="#{msgs.confirmMail}">
							<p:ajax event="blur" update="msg_email2,msg_email_group" />
						</p:inputText>
						<h:panelGroup>
							<p:message for="email2" id="msg_email2" />
							<p:message for="email_group" id="msg_email_group" />
						</h:panelGroup>
					</h:panelGrid>
				</p:fieldset>
and the listener

Code: Select all

public void validateEmail(ComponentSystemEvent event){
		FacesContext context = FacesContext.getCurrentInstance();
		String error_txt = LocaleHelper.getLocaleString(context.getApplication().getMessageBundle(), "error_emailCompare", null, context.getViewRoot().getLocale());
		UIComponent components = event.getComponent();
		
		UIInput uiText1 = (UIInput)components.findComponent("email");
		String text1 = ""+(String)uiText1.getLocalValue();
 
		//get textbox2 value
		UIInput uiText2 = (UIInput)components.findComponent("email2");
		String text2 = ""+(String)uiText2.getLocalValue();
		
		if (!text1.equals(text2)) {
        	FacesMessage message = new FacesMessage();
			message.setSeverity(FacesMessage.SEVERITY_ERROR);
			message.setSummary(error_txt);
			context.addMessage(components.getClientId(), message);			
        }
	}
Thanks for your help.

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 56 guests