2009-06-04 9 views
13

El ejemplo de FormPanel's javadoc dice:GWT: ¿Cómo obtener un resultado de presentación de FormPanel

" ... Suponiendo que el servicio devuelve una respuesta de tipo text/html, podemos obtener el texto resultado aquí (ver el Documentación de FormPanel para una explicación más detallada) ... "

Sin embargo, el javadoc no explica un poco sobre este tema. ¿Alguien ha encontrado cómo obtener la respuesta HTML enviada desde el servidor después de un envío de formulario?

Respuesta

6

Agregue un FormHandler a su FormPanel, y enSubmitComplete recibirá un FormSubmitCompleteEvent. Invoca su método getResults() para obtener el resultado.

form.addFormHandler(new FormHandler() { 
    public void onSubmit(FormSubmitEvent event) { // validation etc } 

    public void onSubmitComplete(FormSubmitCompleteEvent event} { 

     Window.alert(event.getResults()); // display the result 
    } 

}; 
+1

No funciona para mí. event.getResult() llamado en GWT 1.6 en Mac devuelve nulo. – ciukes

+0

¿Estás seguro de que estás devolviendo algo de la carga del archivo? Es decir. si está transfiriendo esto a un servlet, use response.getOutputStream(). write ("Works!"); response.getOutputStream(). flush(); –

0

// =========== en el lado del cliente:

SubmitCompleteHandler sch = new SubmitCompleteHandler() 
{ 
    public void onSubmitComplete(SubmitCompleteEvent event) 
    { 
    //get back the data results that had input the .xml 
    String dpsString = event.getResults(); 

    //And do your wanted action with the result 
    System.out.println(dpsString); 
    } 
}; 
uploadForm.addSubmitCompleteHandler(sch); 

// =========== en el lado del servidor:

// parse and handle file, e.g. if there is an xml file 
... 
InputStream fileImputStream = uploadItem.getInputStream(); 
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); 
Document doc = docBuilder.parse(fileInputStream); 
doc.getDocumentElement().normalize(); 
System.out.println("Root element of the doc is " + doc.getDocumentElement().getNodeName()); 
... 
//Response to the request with the result 
dpsString = doc.getDocumentElement().getNodeName(); 
response.getWriter().write(new String(dpsString)); 
3

Tras la answear de "Robert Munteanu" usted debe buscar en:

http://google-web-toolkit.googlecode.com/svn/javadoc/2.0/com/google/gwt/user/client/ui/FormPanel.SubmitCompleteEvent.html

Y allí se puede ver:

getResults

getResults java.lang.String públicas()

Obtiene el texto resultado de la sumisión de la forma.

Devuelve:

el html resultado, o NULL si hubo un error leerlo

Consejo:

El html resultado puede ser nulo como consecuencia de la presentación de una forma a otra dominio.

0

Intenté reemplazar el host local por el nombre de la máquina, no sirvió de ayuda [algunas personas dicen que les ayudó], pero es una cuestión de dominio cruzado java-script, así que traté de usar el patrón URL asignado en el web xml y obtuve un resultado de cadena. para más detalles mirar hacia arriba respuesta pato de goma en este enlace

GWT Blobstore error calling createUploadUrl()

0

yo era capaz de obtener mensaje de resultado en el modo DEV con el siguiente código:

lado del cliente: lado

FormPanel formPanel = new FormPanel(); 
      FormElement.as(formPanel.getElement()).setAcceptCharset("UTF-8"); 
formPanel.setAction(sb.toString()); 
formPanel.setMethod(FormPanel.METHOD_POST); 
formPanel.setVisible(false); 
RootPanel.get().add(formPanel); 
formPanel.submit(); 
formPanel.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler()  {     
@Override 
    public void onSubmitComplete(SubmitCompleteEvent event) { 
     String results = event.getResults(); 
    } 
}); 

servidor :

response.setContentType("text/html"); 
response.setHeader("Pragma", "No-cache"); 
response.setDateHeader("Expires", 0); 
response.setHeader("Cache-Control", "no-cache"); 
response.getWriter().write(e.getMessage()); 

Navegador: Firefox 24.3.0, Versión GWT: 2.5.1

0

Para mí, el problema fue que construí mi FormPanel con el constructor FormPanel(String). Con el constructor predeterminado, mi SubmitCompleteHandler acaba de funcionar.

Cuestiones relacionadas