best way to pass a parameter to a validator
jamesjmp Jun 10, 2008 1:39 PMHi,
In my seam app (SEAM 2.0.2.SP1) I´m using a validator to check a value selected in a suggestion box. It works ok, but I want now to pass a parameter to the validator and I don´t manage to do it
This is the code:
<s:decorate id="entityGroupByBenchmarkDecoration" template="layout/edit.xhtml"> <ui:define name="label">#{messages['Benchmark']}</ui:define> <h:inputText id="entityGroupByBenchmarkSi" value="#{fundHome.instance.entityGroupByBenchmarkCode.entityGroupCode}" autocomplete="off" required="true"> <a:support event="onblur" ajaxSingle="true"> <f:setPropertyActionListener value="debeExistir" target="#{benchmarkExistsValidator.tipoVal}" /> </a:support> <f:validator validatorId="prr.BenchmarkExistsValidator"> <f:param id="abb" binding="#{benchmarkExistsValidator.tipoVal}" value="HOLA" name="validacion"/> </f:validator> </h:inputText> <rich:suggestionbox for="entityGroupByBenchmarkSi" suggestionAction="#{entityGroupSuggest.suggestBenchmark}" var="entityGroup" fetchValue="#{entityGroup.entityGroupCode}" selfRendered="true" eventsQueue="foo" ignoreDupResponses="true" nothingLabel="#{messages['suggestion.no.data']}" width="200"> <h:column> <h:outputText value="#{entityGroup.entityGroupCode}"></h:outputText> </h:column> <h:column> <h:outputText value="#{entityGroup.entityGroupType}"></h:outputText> </h:column> <a:support event="onblur" reRender="entityGroupByBenchmarkDecoration"/> </rich:suggestionbox> </s:decorate>
And this is the validator:
@Name("benchmarkExistsValidator") public class BenchmarkExistsValidator implements Validator { private String entityGroupCode; private String tipoVal; @SuppressWarnings("unchecked") public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException { System.out.println("benchmarkExistsValidator - value-->"+value.toString()+"<--"); System.out.println("benchmarkExistsValidator - context.getViewRoot-->"+context.getViewRoot().getViewId() +"<--"); System.out.println("benchmarkExistsValidator - component.Id-->"+component.getId()+"<--"); HttpServletRequest myRequest = (HttpServletRequest) context.getExternalContext().getRequest(); String validacion = myRequest.getParameter("validacion"); //ALWAYS NULL System.out.println("validacion-->"+validacion+"<--"); //ALWAYS NULL System.out.println("tipoVal-->"+tipoVal+"<--"); // VALIDATION PROCCESSING... } } public String getEntityGroupCode() { return entityGroupCode; } public void setEntityGroupCode(String entityGroupCode) { this.entityGroupCode = entityGroupCode; } public String getTipoVal() { return tipoVal; } public void setTipoVal(String tipoVal) { this.tipoVal = tipoVal; }
The problem is that my validate method receives null and setPropertyActionListener doesn´t work in this case, and f:param doesn´t work either.
could anyone tell me what am I doing wrong?
thanks in advance!