2011-08-10 50 views
7

Deseo hacer una llamada ajax dentro de mi archivo jsp que llame al método processAction de un portlet, basado en el mensaje de éxito del método processAction necesito hacer otra llamada al método de portlet serveResource, proporcione algunos ejemplos.Solicitud de Ajax en portlets para liferay 6

+2

puede encontrar un ejemplo en [ejemplo] [1] [1]: http://stackoverflow.com/questions/7241861/ajax-in-liferay-portlet –

Respuesta

0

según el mensaje de éxito del proceso Método de la acción No es la forma correcta de hacerlo. Al llamar a la URL de acción de portlet en respuesta, obtiene la respuesta de renderizado habitual, por lo que obtendrá la página con todos los portlets. En su lugar, debe usar la característica de servicio de recursos de Portlet 2.0 y devolver su respuesta como un recurso.

10

En los portlets, los métodos processAction() son seguidos automáticamente por el método de renderizado y, por lo tanto, la respuesta ajax se incrusta con el fragmento de HTML generado por el método de renderizado. Entonces escribir ajax en portlets es un poco complicado.

Echa un vistazo a este blog mío.

http://ajax-and-portlets.blogspot.com/2011/09/ajax-best-practice-in-portlets.html

Se da una visión visión de lo que es la mejor práctica para implementar el Ajax en portlets (tanto para JSR-168 y JSR-286 portlets).

En caso de que desee portlets de muestra, puede ponerse en contacto conmigo a través de los datos de contacto del blog. Estaré encantado de ayudarte.

Gracias Jignesh

+0

¡Impresionante! Gran entrada de blog. – Will

0

Se puede extraer de mi portlets que tiene ejemplos para ambos serveResource y processAction métodos que llama. Ajax Jquery Portlet

3

This question funcionó para mí.

Básicamente, el controlador

@Controller 
@RequestMapping("VIEW") // VIEW mapping (as opposed to EDIT) 
public class MyPortlet { 
    @RenderMapping 
    public String handleRenderRequest(RenderRequest request, RenderResponse response) { 
     return "defaultRender"; 
    } 

    @ResourceMapping("myURL") 
    public void handleMyResource(ResourceRequest request, ResourceResponse response) { 
     OutputStream outStream; 
     try { 
      outStream = response.getPortletOutputStream(); 
      ObjectMapper mapper = new ObjectMapper(); 

      mapper.writeValue(outStream, "Hello world!"); 
     } catch (IOException ex) { 
      // TODO : Do something with errors. 
     } 
    } 
} 

Y la JSP:

<portlet:resourceURL id="myURL" var="myURL"/> 

<script type="text/javascript"> 
    var urlink = "<%= myURL %>"; 
    $.ajax({ 
     url: urlink, 
     cache: false, 
     type: "POST", 
     success: function(jsondata) { 
      console.log(jsondata); 
     } 
    }); 
</script> 
Cuestiones relacionadas