showcase resetear formulario example etiquetas espacios callback primefaces pojo args requestcontext

callback - resetear - ¿Cómo enviar un POJO como un param de devolución de llamada usando PrimeFaces ''RequestContext?



resetear formulario primefaces (1)

Puedo enviar param (s) de devolución de llamada y funciona perfectamente siempre que solo envíe algunos tipos primitivos como String. Pero lo mismo no funciona, incluso para el POJO más simple. La guía PrimeFaces dice que el método RequestContext.addCallbackParam () puede manejar POJO y los convierte en JSON. No sé por qué no funciona en mi caso.

¿Alguien ha hecho eso?


Solución encontrada! -------------------------------------------------- -------------------

Investigué un poco y encontré la respuesta a esta pregunta.

Y la solución fue usar alguna biblioteca JSON (ahora estoy usando GSON) para convertir objetos Java a objetos JSON.

nuevo Gson (). toJson (algunosJavaObj)

devuelve la cadena. Simplemente envíe la cadena como el parámetro y en el lado del cliente usando js ''eval o alguna función de la biblioteca js para convertir eso en JSON nuevamente.

En realidad, fue bastante limpio y simple.

Lamento que en realidad no publiqué la solución. A continuación está la solución mía:

Método de acción en el bean de respaldo -

public void retrievePieData() { List<String> categories = new ArrayList<String>(); categories.add("Electronic"); categories.add("Food"); categories.add("Liguor"); categories.add("Stationary"); categories.add("Mechanical"); List<Integer> itemCounts = new ArrayList<Integer>(); itemCounts.add(5); itemCounts.add(20); itemCounts.add(1); itemCounts.add(50); itemCounts.add(10); RequestContext reqCtx = RequestContext.getCurrentInstance(); reqCtx.addCallbackParam("categories", new Gson().toJson(categories)); reqCtx.addCallbackParam("itemCounts", new Gson().toJson(itemCounts)); }

PrimeFaces p: commandButton en la vista -

<p:commandLink action="#{pieDataProvider.retrievePieData}" oncomplete="feedPieData(xhr, status, args);" value="Pie chart demo" update="pieData" />

Función Javascript

function feedPieData(xhr, status, args) { var categories = eval(''('' + args.categories + '')''); var itemCounts = eval(''('' + args.itemCounts + '')''); options.xAxis.categories = categories; var series = { data: [] }; series.name = new Date().toString(); series.data = itemCounts; options.series = [series]; chart = new Highcharts.Chart(options); }

Realmente agradecería y agradecería cualquier sugerencia u opinión. ¡Gracias!