Ver Mensaje Individual
  #3 (permalink)  
Antiguo 11/03/2014, 02:54
Daniello23
 
Fecha de Ingreso: enero-2014
Mensajes: 17
Antigüedad: 11 años
Puntos: 0
Respuesta: Problemas con el RENDERED en JSF activado por AJAX

Cita:
Iniciado por farfamorA Ver Mensaje
Esta respuesta puede ayudarte, a mi me sirvió:
[url]http://stackoverflow.com/a/9010771/1895645[/url]
"Ajax updating is performed by JavaScript language in the client side. All which JavaScript has access to is the HTML DOM tree. If JSF does not render any component to the HTML output, then there's nothing in the HTML DOM tree which can be obtained by JavaScript upon Ajax update. JavaScript cannot get the desired element by its ID."

Visita también el link que adjunta esa respuesta:
[url]http://balusc.blogspot.com/2011/09/communication-in-jsf-20.html#AjaxRenderingOfContentWhichIsByItselfCondi tionallyRendered[/url]
" You need to ensure that the render ID points to a component which is already present in the JSF-generated HTML output."

Básicamente te recomienda que debes hacer esto:
Código XML:
Ver original
  1. <h:panelGroup id="hasAdaptation">
  2.        <p:outputLabel id="hasAdaptationText" value="#{msgs.createHasAdaptation}"  />
  3.        <p:inputText id="hasAdaptation" value="#{drdObjectMB.hasAdaptation}" size="25" />
  4. </h:panelGroup>
Y usar el atributo render de la etiqueta f:ajax
Código XML:
Ver original
  1. <f:ajax render=":hasAdaptation" />

Espero que te sirva de ayuda.
Joder, muchísimas gracias!!!

Era eso!!

Al final he englobado las etiquetas que quería ocultar/mostrar en elementos <h: y sí que me funciona:

Código:
                            <p:outputLabel value="#{msgs.typeOfObject}"/>
                            <p:selectOneMenu value="#{drdObjectMB.typeOfObjectSelected}">                                                                   
                                <f:selectItem itemValue="#{msgs.selectOriginal}" itemLabel="#{msgs.selectOriginal}"/>
                                <f:selectItem itemValue="#{msgs.selectAdapted}" itemLabel="#{msgs.selectAdapted}"/>
                                <f:ajax render="fileNameOr descriptionFile hasAdaptation hasAdaptation2" listener="#{drdObjectMB.updateOutputLabels}" event="change" />
                            </p:selectOneMenu>



                            <h:column>
                                <h:panelGrid id="hasAdaptation">
                                    <p:outputLabel value="#{msgs.createHasAdaptation}" rendered="#{drdObjectMB.hideFields}"/>
                                </h:panelGrid>
                            </h:column>
                            <h:column>
                                <h:panelGrid id="hasAdaptation2">
                                    <p:inputText value="#{drdObjectMB.hasAdaptation}" rendered="#{drdObjectMB.hideFields}" size="25">
                                    </p:inputText>       
                                </h:panelGrid>
                            </h:column>