¿Puedes actualizar una h: outputLabel desde ap: ajax listener?

Intento usar la etiqueta ap: ajax y luego en ese oyente, estoy configurando un valor llamado “periodRendered”. entonces estoy tratando de actualizar una etiqueta h: outputLabel a través de una actualización de la etiqueta p: ajax. No está actualizando ajaxily y creo que es porque una etiqueta ajax de primefaces no puede actualizar una etiqueta jsf outputLabel estándar.

¿Mi suposición es correcta y hay una etiqueta más apropiada que debería usar en lugar de h: outputLabel?

 

No puede actualizar los elementos que no se representan, rendered=false “es una forma JSF de” para eliminar elementos del árbol DOM,

no es como la display:none css display:none o visibility:hidden <- estos dos mantendrán los elementos en el árbol DOM pero ocultos, mientras que JSF rendered=false ni siquiera renderizará (mantendrá) el elemento en el árbol DOM (ni siquiera lo verás) en la “fuente de vista” de la página)

Entonces, en su caso, debe envolver el outputLabel con `panelGroup ‘y actualizar el id del wrapper

    

y consulte el identificador de envoltura (que siempre estará en el árbol DOM) en el atributo de update , como este:

  

Otra solución sería actualizar todo el formulario como este esa manera no es necesario envolver el outputLabel

con respecto a su pregunta de comentario

¿cómo @form actualiza los elementos no procesados, pero orientarlos directamente a través de los identificadores no?

No puede orientar un elemento en la update que no está presente en la página (rendered = false) "its not there"

Pero cuando usas update="@form" o update="someWrapperID" el formulario / envoltorio "re evalúa" todos sus elementos internos, incluidos los que tienen rendered="#{someBean.someCondition}" y la condición se "vuelve a evaluar" "entonces si resulta true , se mostrará el elemet ...

No estoy seguro de la razón de este comportamiento, pero estoy poniendo dinero en el hecho de que p: ajax va a requerir un objective activo para que la actualización funcione. Aquí hay un ejemplo de que funciona / no funciona:

          

//Frijol…

 @ViewScoped @ManagedBean(name = "testScope") public class TestScope { private String[] values = { "False", "What?", "True" }; private String target = "Nothing"; /** * @return the target */ public String getTarget() { return target; } /** * @return the values */ public String[] getValues() { System.out.println(values); return values; } public boolean isTimeToRender() { return "True".equals(target); } /** * @param target the target to set */ public void setTarget(String target) { this.target = target; } } 

No tengo tiempo para profundizar en este, pero a partir de una mirada rápida (nuevamente RÁPIDA) en el depurador parece que no encuentra el ID (no se representa) por lo que no recibe la actualización . ¿Por qué? No estoy seguro – la solución fácil es colocarlo dentro de algo que pueda actualizar (p: outputPanel) y renderizarlo como un lapso, entonces su código debería funcionar. ¿Es esto aceptable? Realmente no…

Si puede tratar con una actualización de formulario completo, lo siguiente también funcionará ->

  

Como está segmentando el formulario adjunto, actualiza a todos los niños. Si estuviera haciendo esto, esa es la solución que usaría. No se trata de una gran cantidad de datos y es mucho más limpio. No estoy seguro de si esto es un error o una característica. Sin embargo, se siente con errores.

Respuesta corta: sí, puede orientar una etiqueta. Respuesta larga: no puede apuntar a uno que no se represente. Realmente espero que esto ayude.