referencia redireccionar por pasar parametros parametro paginas pagina otra hacer enviar entre con agregar javascript jsf primefaces parameters remotecommand

redireccionar - Pase el parámetro a p: remoteCommand desde JavaScript



pasar parametros html 5 (7)

Combina la publicación de @BalusC @ Joel para un ejemplo funcional

<h:form> <p:remoteCommand name="rcName" update="msgs" actionListener="#{remoteCommandView.beanMethod}" /> <p:growl id="msgs" showDetail="true" /> <p:commandButton type="button" onclick="rcName([{name:''model'', value:''Buick Encore''}, {name:''year'', value:2015}]);" value="Pass Parameters 1" /><br/> <p:commandButton type="button" onclick="clicked();" value="Pass Parameters 2" /> </h:form> <script type="text/javascript"> //<![CDATA[ function clicked(){ rcName([{name:''model'', value: ''Chevy Volt''}, {name:''year'', value:2016}]); } //]]> </script> @ManagedBean public class RemoteCommandView { public void beanMethod() { // OR - retrieve values inside beanMethod String model1 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("model"); String year1 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("year"); FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Executed", "Using RemoteCommand with parameters model := " + model + ", year := " + year)); } @ManagedProperty("#{param.model}") private String model; @ManagedProperty("#{param.year}") private int year; public void setModel(String model) { this.model = model; // value set by JSF } public void setYear(int year) { this.year = year; } }

Quiero pasar el valor a remoteCommand desde javascript. Si esto es posible, ¿cómo puedo hacer eso y cómo puedo recibirlos en el bean de respaldo?


Cuando necesite pasar más de un parámetro de javascript, la sintaxis es:


var param1 = ...;
var param2 = ...;
var param3 = ...;

remoteCommandFunction ([{nombre: ''param1'', valor: param1 }, {nombre: ''param2'', valor: param2 }, {nombre: ''param3'', valor: param3 }]);


Página:

<p:remoteCommand name="command" action="#{bean.method}" />

JavaScript:

command({param: ''value''});

Frijol:

public void method() { String value = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("param"); }


PrimeFace 5.0, matriz dinámica (todo el ancho de columna de la tabla se enviará por este método)

Haz

public void updateTableColumnsWidth() { FacesContext context = FacesContext.getCurrentInstance(); Map<String, String> map = context.getExternalContext().getRequestParameterMap(); }

p: remoteCommand

<h:form> <p:remoteCommand name="remoteCommand" action="#{controller.updateTableColumnsWidth}" /> </h:form>

JS

<script type="text/javascript"> function updateTableColumnsWidth () { var columnsCount = document.getElementById(''table'').rows[0].cells.length; var json = []; for (var i = 0; i &lt; columnsCount; i++) { json[i] = { name: i, value: document.getElementById(''table'').rows[0].cells[i].offsetWidth}; } console.log(json); remoteCommand(json); }; </script>


Sí, es posible. Cómo hacer eso depende de la versión de PrimeFaces. Puedes verlo en la guía de usuarios de PrimeFaces . Antes de PrimeFaces versión 3.3, la sintaxis es la siguiente (copiado de la guía de 3.2 usuarios):

3.80 RemoteCommand

...

Pasar parámetros

El comando remoto puede enviar parámetros dinámicos de la siguiente manera;

increment({param1:''val1'', param2:''val2''});

Está disponible en el bean de respaldo por los medios habituales. Por ejemplo, en un bean con ámbito de solicitud:

@ManagedProperty("#{param.param1}") private String param1; @ManagedProperty("#{param.param2}") private String param2;

o en el método de un frijol de ámbito más amplio:

Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); String param1 = params.get("param1"); String param2 = params.get("param2");

Sin embargo, este enfoque tiene la desventaja de que no se puede especificar un único parámetro con valores múltiples como sea posible con formularios HTML normales y parámetros de solicitud HTTP (que se usa en el mundo real, por ejemplo, en la lista desplegable de selección múltiple y en el grupo de selección múltiple).

Desde PrimeFaces versión 3.3, la sintaxis es la siguiente (copió de la guía de 3.3 usuarios):

3.81 RemoteCommand

...

Pasar parámetros

El comando remoto puede enviar parámetros dinámicos de la siguiente manera;

increment([{name:''x'', value:10}, {name:''y'', value:20}]);

De esta manera, ofrece la posibilidad de especificar múltiples valores en un solo nombre de parámetro. Los parámetros con valores únicos como los anteriores están disponibles de la misma manera que en el pasado:

@ManagedProperty("#{param.x}") private int x; @ManagedProperty("#{param.y}") private int y;

(nota: puede usar Integer en Mojarra, pero no en MyFaces, esto no tiene ninguna relación con <p:remoteCommand> )

o en el método de un frijol de ámbito más amplio:

Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); int x = Integer.valueOf(params.get("x")); int y = Integer.valueOf(params.get("y"));

Si necesita especificar un parámetro con valores múltiples, puede hacerlo de la siguiente manera:

functionName([{name:''foo'', value:''one''}, {name:''foo'', value:''two''}, {name:''foo'', value:''three''}]);`

con un bean con ámbito de solicitud:

@ManagedProperty("#{paramValues.foo}") private String[] foos;

o en el método de un frijol de ámbito más amplio:

Map<String, String[]> paramValues = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterValuesMap(); String[] foos = paramValues.get("foo");


Si desea llamar a su propia función, p. Ej. un cuadro de diálogo de confirmación, su función personalizada debe ser compatible con el estilo de parámetro de paso. p.ej:

<p:commandLink id="myId" onclick="confirmDelete([{name:''Id'', value: ''#{my.id}''}]);" immediate="true">

La función de script java

function confirmDelete(id) { if (confirm(''Do you really want to delete?'')) { remoteDeleteDemand(id); return true; }

La etiqueta remoteCommand

<p:remoteCommand name="remoteDeleteDemand" actionListener="#{myController.doDelete}" />


remoteCommandFunctionName({name1:''value1'', name2:''value2''});