[EMAIL PROTECTED] wrote on 10/05/2005 05:48:57 PM: > > Right strategy ... but one wrong detail. The search expression for > findComponent() is the *client id* of the component in question, not the > *id* property value. In turn, the client id will be affected by the id of > naming containers (such as the <h:form> component) that your input field is > nested in. Quickest way to see what value you should use is to do a View > Source on the HTML page, and see what id was emitted for the input field. > > A different approach that will often be easier, though, is to use the > "binding" attribute to bind an instance of your actual component into the > backing bean. In the JSP page, you can say: > > <h:inputSecret id="password" binding="#{backingBean.password}" .../> > > and in the managed bean labelled by "backingBean" (the same one where you do > your authentication check): > > private HtmlInputSecret password = null; > public HtmlInputSecret getPassword() { return this.password; } > public void setPassword(HtmlInputSecret password) { this.password = > password; } >
ok, here's the relevant code now: RegistrationBean (backingbean) has: private HtmlInputSecret password = null; private HtmlInputSecret password2 = null; > That way, the code that calls error() has direct access to the actual > component instance, and does not have to look it up. public String save() { .. if (!(password.equals(password2))) { error(password, messages.getMessage("password.mismatch")); // I assume this is what you by your comment above..? } .. }//end save Finally, My registration.jsp has: <h:inputSecret id="password" required="true" binding=" #{registration.password}" /> <h:message for="password" /> What have I missed? Since the error still doesn't show up.. > > Craig > Thanks again, Geeta