Tengo una página llamada Pedidos y una página llamada Detalles de pedido. Como se describe en el excelente MVP tutorial, estoy trabajando con History (con un ValueChangeListener central) y un HandlerManager "bus de eventos".¿Cómo usar el historial de GWT para pasar parámetros?
Tengo un controlador registrado para el evento que alguien hace clic en un pedido, que básicamente crea el OrderDetailPresenter, pasa el ID del pedido (que está contenido en ShowOrderDetailEvent) y luego llama al History.newItem("orderDetails")
.
Esto tiene un par de desventajas importantes: este paso de historia recién creado NO sabe qué ID de orden se pasó. Entonces, por ejemplo, si alguien marca la página de detalles del pedido (o retrocede y avanza en su navegador), ' Obtendré una página en blanco sin detalles de la orden.
Entonces mi pregunta es: ¿Debería hacer algo como History.newItem("orderDetails?id="+id)
, y luego analizar el token de historial en mi detector de cambios de valores? De ser así, ¿existe una mejor práctica, una API o una biblioteca para analizar y formatear argumentos en una cadena de esta manera?
En realidad GWT TENGA en cuenta las diferencias en los navegadores. Incluso funciona en torno a una serie de cuestiones diferentes que no se mencionan aquí. Entonces puedes usar cualquiera de los personajes mencionados. Si desea verificar esto, simplemente eche un vistazo a las clases 'com.google.gwt.user.client.impl.HistoryImpl' en el archivo 'gwt-user.jar' (gwt 2.0). Y también hace la de/codificación para que pueda pasar el '@' y se ocupará de ello. –
Suena genial. Observé que GMail hace exactamente esto también, si hago clic en una etiqueta, por ejemplo, la URL cambia a "... # inbox/labelname". Ellos URL codifican el nombre de la etiqueta, sin embargo, así que estoy haciendo lo mismo con URL.encode y URL.decode. – Epaga
Solo para completar. Si usa 'History.newItem (..)' no debe decodificar/codificar, porque GWT ya lo hace por usted. De hecho, si lo haces, podría llevar a los problemas mencionados sobre Firefox. –