Tengo algunos problemas para que ap:remoteCommand funcione, se define de la siguiente manera:
<ui:composition xmlns:ui="http://xmlns.jcp.org/jsf/facelets" template="/template.xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui"> <ui:define name="content"> <h:form id="form" enctype="multipart/form-data" > <p:remoteCommand name="connectionTest" action="#{entry.checkConnection}" oncomplete="console.log('BAR');" style="display: none;"/> <p:inputText id="dummy" required="true" value="#{entry.X}" disabled="#{entry.disabled}" /> <script type="text/javascript"> $(function() { $(document).ready(async function () { console.log('foo'); connectionTest(); }); }); </script> </h:form> </ui:define> </ui:composition>Y un método de bean en un bean ViewScoped llamado "entrada":
public void checkConnection() { ...do stuff }Se invoca el comando remoto, ya que foo y BAR se imprimen en la consola, pero no se invoca el método real del bean checkConnection. He probado todas las permutaciones de action vs actionListener y entry.checkConnection vs entry.checkConnection().
Las etiquetas remoteCommand y script están en el mismo formato h: dentro de una ui: define dentro de una ui: composición. ¿Qué me estoy perdiendo?
Editar: después de algunas pruebas y errores, parece estar relacionado con tener un requerido = "verdadero" p: inputText en el mismo formulario. He actualizado mi pregunta en consecuencia. Mover p:remoteCommand fuera del formulario parece que funciona, pero todavía no estoy seguro de por qué ap:remoteCommand dentro de un formulario con un p:inputText requerido no funciona.