Thanks a lot again for your help, now it is working very good.
Regads!! On Thu, Oct 27, 2011 at 9:49 AM, Anahide Tchertchian <[email protected] > wrote: > remove id="{widget.id}" from the div > > h:selectOneRadio value="#{field}" id="#{widget.id}_checkbox" => > h:selectOneRadio value="#{field}" id="#{widget.id}" > > On 27 October 2011 16:41, Jesus Ibañez <[email protected]> wrote: > > Hello Anahide! > > > > Thanks a lot for you rapid response, i took a look at my other widget > > template "reintegra_boolean_radio_widget_template.xhtml" and the tag > holding > > the id="#{widget.id}" was "f:subview" and after change it to a div now > it > > can get the atributes but still can't found the component, the old error > on > > the screen has disappeared but now the stack trace show just the > following > > error: > > > > ERROR [mx.org.reintegra.Validate] Cannot validate grupo etnico: input(s) > not > > found (component) > > > > My template reintegra_boolean_radio_widget_template.xhtml now looks as > > follows: > > > > <div xmlns:f="http://java.sun.com/jsf/core" > > xmlns:h="http://java.sun.com/jsf/html" > > xmlns:c="http://java.sun.com/jstl/core" > > xmlns:a4j="https://ajax4jsf.dev.java.net/ajax" > > xmlns:nxu="http://nuxeo.org/nxweb/util" > > xmlns:nxdir="http://nuxeo.org/nxdirectory" > > xmlns:nxl="http://nuxeo.org/nxforms/layout" id="#{widget.id}"> > > > > <c:if test="#{widget.mode == 'edit' }"> > > <h:selectOneRadio value="#{field}" id="#{widget.id}_checkbox" > > onclick="evalua(this);"> > > <f:selectItem itemValue="#{true}" > itemLabel="#{messages['label.yes']}" > > /> > > <f:selectItem itemValue="#{false}" itemLabel="#{messages['label.no > ']}" > > /> > > </h:selectOneRadio> > > <h:message styleClass="errorMessage" for="#{widget.id}_checkbox" > > id="#{widget.id}_message" /> > > </c:if> > > > > <c:if test="#{widget.mode == 'view' }"> > > <h:outputText rendered="#{field}" value="#{messages['label.yes']}" /> > > <h:outputText rendered="#{! field}" > > value="#{messages['label.no']}" /> > > </c:if> > > > > </div> > > > > > > > > > > On Thu, Oct 27, 2011 at 4:59 AM, Anahide Tchertchian > > <[email protected]> wrote: > >> > >> Hi, > >> The stack trace could help but i think your validation template is > >> giving the id of a JSF component which is not the input component > >> holding the value you need to perform the validation on. > >> You should check the widget template > >> "/widgets/reintegra_boolean_radio_widget_template.xhtml" and see what > >> tag holds the attribute id="#{widget.id}" => this should be the input > >> component instead (h:selectOnRadio i guess). > >> After that, if it still does not work and your component is not found, > >> check if it holds a f:subview tag and try to remove it by a non-naming > >> container tag (like a div, as done in your other widget template), as > >> it may interfere with the lookup strategy implemented by > >> UIComponent#findComponent. > >> I guess you took example on the default > >> boolean_radio_widget_template.xhtml file, it was not conceived to be > >> used in a cross validation check. > >> > >> On 27 October 2011 07:37, Jesus Ibañez <[email protected]> wrote: > >> > Hello! > >> > > >> > I´m trying to validate fields of document at creation, but i get the > >> > error > >> > at the screen as follows: > >> > > >> > /widgets/reintegra_etnico_validation_widget_template.xhtml @8,23 > >> > validator="#{valida.grupoEtnico}": java.lang.ClassCastException: > >> > javax.faces.component.UINamingContainer cannot be cast to > >> > javax.faces.component.UIInput > >> > > >> > i have my widget template and code as follows: > >> > > >> > reintegra_etnico_validation_widget_template.xhtml: > >> > > >> > <div xmlns:f="http://java.sun.com/jsf/core" > >> > xmlns:h="http://java.sun.com/jsf/html" > >> > xmlns:c="http://java.sun.com/jstl/core"> > >> > > >> > <c:if test="#{widget.mode == 'edit'}"> > >> > > >> > <h:inputHidden value="needed" validator="#{valida.grupoEtnico}" > >> > id="#{widget.id}"> > >> > <f:attribute name="perteneceGrupoEtnicoId" > >> > value="#{layout.widgetMap['perteneceGrupoEtnico'].id}" /> > >> > <f:attribute name="grupoEtnicoId" > >> > value="#{layout.widgetMap['grupoEtnico'].id}" /> > >> > </h:inputHidden> > >> > <h:message for="#{widget.id}" styleClass="errorMessage" /> > >> > > >> > </c:if> > >> > > >> > </div> > >> > > >> > > >> > > >> > > >> > Layout: > >> > > >> > <widget name="perteneceGrupoEtnico" type="template"> > >> > <labels> > >> > <label mode="any">Pertenece a algún grupo étnico?</label> > >> > </labels> > >> > <translated>false</translated> > >> > <fields> > >> > <field>imputado:perteneceGrupoEtnico</field> > >> > </fields> > >> > <properties widgetMode="edit"> > >> > <property > >> > > >> > > name="template">/widgets/reintegra_boolean_radio_widget_template.xhtml</property> > >> > <property name="elementId">etnico</property> > >> > <property name="required">true</property> > >> > </properties> > >> > <properties mode="any"/> > >> > </widget> > >> > <widget name="grupoEtnico" type="selectOneDirectory"> > >> > <labels> > >> > <label mode="any">Grupo étnico</label> > >> > </labels> > >> > <translated>false</translated> > >> > <fields> > >> > <field>imputado:grupoEtnico</field> > >> > </fields> > >> > <properties widgetMode="edit"> > >> > <property name="localize">false</property> > >> > <property name="directoryName">gEtnicos</property> > >> > <property name="displayIdAndLabel">false</property> > >> > <property name="ordering">label</property> > >> > <property name="notDisplayDefaultOption">false</property> > >> > <property name="displayObsoleteEntries">false</property> > >> > <property name="required">false</property> > >> > </properties> > >> > <properties mode="any"/> > >> > </widget> > >> > <widget name="validaEtnico" type="template"> > >> > <labels> > >> > <label mode="any"></label> > >> > </labels> > >> > <translated>false</translated> > >> > <fields/> > >> > <properties widgetMode="edit"> > >> > <property > >> > > >> > > name="template">/widgets/reintegra_etnico_validation_widget_template.xhtml</property> > >> > </properties> > >> > <properties mode="any"/> > >> > </widget> > >> > > >> > > >> > > >> > > >> > Bean: > >> > > >> > public void grupoEtnico(FacesContext context, UIComponent > component, > >> > Object value) { > >> > Map<String, Object> attributes = component.getAttributes(); > >> > String perteneceGrupoEtnicoInputId = (String) > >> > attributes.get("perteneceGrupoEtnicoId"); > >> > String grupoEtnicoInputId = (String) > >> > attributes.get("grupoEtnicoId"); > >> > if (perteneceGrupoEtnicoInputId == null || grupoEtnicoInputId > == > >> > null) { > >> > log.error("Cannot validate grupo etnico: input id(s) not > >> > found > >> > (attributes)"); > >> > return; > >> > } > >> > > >> > UIInput perteneceGrupoEtnicoComp = (UIInput) > >> > component.findComponent(perteneceGrupoEtnicoInputId); > >> > UIInput grupoEtnicoComp = (UIInput) > >> > component.findComponent(grupoEtnicoInputId); > >> > if (perteneceGrupoEtnicoComp == null || grupoEtnicoComp == > null) > >> > { > >> > log.error("Cannot validate grupo etnico: input(s) not > found > >> > (component)"); > >> > return; > >> > } > >> > > >> > Object perteneceGrupoEtnico = > >> > perteneceGrupoEtnicoComp.getLocalValue(); > >> > Object grupoEtnico = grupoEtnicoComp.getLocalValue(); > >> > > >> > if (perteneceGrupoEtnico == null || grupoEtnico == null) { > >> > log.error("Cannot validate passwords: value(s) not found > >> > (null)"); > >> > return; > >> > } > >> > > >> > FacesMessage message = new > >> > FacesMessage(FacesMessage.SEVERITY_ERROR, "testing", null); > >> > throw new ValidatorException(message); > >> > > >> > } > >> > > >> > what am i doing wrong? > >> > Any help would be appreciate, thanks in advanced. > >> > > >> > > >> > > >> > -- > >> > Jesus Ibañez > >> > > >> > > >> > --- > >> > Mailing list: [email protected] > >> > Forum: http://forum.nuxeo.org/f/1/ > >> > > > > > > > > > -- > > Jesus Ibañez > > > > > -- Jesus Ibañez
--- Mailing list: [email protected] Forum: http://forum.nuxeo.org/f/1/
