1

The problem that I am facing is that <p:commandButton> with id="emailav" doesn't call the action method emailAvailability. I am using it inside p:wizard and also I have included the following block of code inside h:form.

1) xhtml

<p:tab id="personal" title="Personal">
    <p:panel header="Personal Details" style="font-size:small">
        <h:panelGrid columns="3" columnClasses="label, value"
            styleClass="grid">
            <h:outputText value="Username*" />
            <p:inputText id="usrname" required="true" label="Username"
                value="#{registrationBean.user.userName}"
                requiredMessage="Username required" />
            <p:message for="usrname"></p:message>
            <h:outputText value="Firstname: *" />
            <p:inputText id="frstname" required="true" label="Firstname"
                value="#{registrationBean.user.firstName}"
                requiredMessage="Firstname required" />
            <p:message for="frstname"></p:message>
            <h:outputText value="Lastname: *" />
            <p:inputText id="lstname" required="true" label="Lastname"
                value="#{registrationBean.user.lastName}"
                requiredMessage="Lastname required" />
            <p:message for="lstname"></p:message>
            <h:outputText value="Password: *" />
            <p:password id="pwd1" value="#{registrationBean.user.password}"
                feedback="true" match="pwd2" label="Password" required="true"
                requiredMessage="Password required" />
            <p:message for="pwd1"></p:message>
            <h:outputText value="Confirm Password: *" />
            <p:password id="pwd2" value="#{registrationBean.user.password}"
                label="Confirm Password" required="true"
                requiredMessage="Enter the password again" />
            <p:message for="pwd2"></p:message>
            <h:outputText value="Date of Birth(dd/MM/yyyy):" />
            <p:inputText id="dob" label="Date of Birth"
                value="#{registrationBean.user.birthDate}" />
            <p:message for="dob"></p:message>
            <h:outputText value="Gender: " />
            <p:selectOneMenu id="gender" value="#{registrationBean.user.gender}">
                <f:selectItem itemLabel="Select One" itemValue="" />
                <f:selectItem itemLabel="Male" itemValue="Male" />
                <f:selectItem itemLabel="Female" itemValue="Female" />
                <f:selectItem itemLabel="Other" itemValue="Other" />
            </p:selectOneMenu>
            <p:message for="gender"></p:message>
            <h:outputText value="Relationship Status: " />
            <p:selectOneMenu id="relationship"
                value="#{registrationBean.user.relationship}">
                <f:selectItem itemLabel="Select One" itemValue="" />
                <f:selectItem itemLabel="Single" itemValue="Single" />
                <f:selectItem itemLabel="Committed" itemValue="Committed" />
                <f:selectItem itemLabel="Open relationship" itemValue="Open relationship" />
                <f:selectItem itemLabel="Its comlicated" itemValue="Its complicated" />
            </p:selectOneMenu>
            <p:message for="relationship"></p:message>
            <h:outputText value="Email: *" />
            <p:inputText  id="email" label="Email"
                value="#{registrationBean.user.email}" required="true"
                requiredMessage="Email required"/>
            <p:message for="email"/>
            <p:commandButton id="emailav" value="email availability"
                action="#{registrationBean.emailAvailability}" update="emailav" />
            <p:message for="emailav"></p:message>
            <p:commandButton style="display:none"/>
            <h:outputText value="Skip to last: " />
            <h:selectBooleanCheckbox value="#{registrationBean.skip}" />
        </h:panelGrid>
    </p:panel>
</p:tab>

2)Backing bean

public String emailAvailability() {
        logger.info("inside emailAvailability");
        FacesContext context = FacesContext.getCurrentInstance();
        Query query = em.createQuery("SELECT u FROM User u", User.class);
        List<User> results = query.getResultList();
        Iterator<User> it = results.listIterator();
        while (it.hasNext()) {

            if (it.next().getEmail().equals(user.getEmail())) {
                context.addMessage(null,
                        new FacesMessage("Email already taken"));
            }

        }
         context.addMessage(null, new FacesMessage("Email not taken"));
        return "success";
    }
Luiggi Mendoza
  • 85,076
  • 16
  • 154
  • 332
Wizard Sultan
  • 830
  • 7
  • 22
  • 45
  • 1
    Please work through http://stackoverflow.com/a/2120183 If you still stucks, please create a **real** SSCCE. The current code seems to contain too much irrelevant noise. Does the problem still manifest when you get rid of ``? If so, please keep it out to reduce code noise. The same applies to texts, labels, panelgrids, style="...", etc. Also, does the problem still manifest if you reduce the form to 1 input field and 1 button? If so, then please keep all other inputs out to reduce code noise. See also http://stackoverflow.com/tags/jsf/info – BalusC May 09 '13 at 13:42

1 Answers1

1

try adding process="@this"

like

                <p:commandButton
                    value="Add Site 1"
                    update="editor"
                    title="Remover"
                    action="#{jobEngine2MB.addSiteType1}"
                    process="@this" />
Leo
  • 6,480
  • 4
  • 37
  • 52