2016-01-19 2 views
0

Lorsque la page est en cours de chargement, je dois rediriger vers une autre page au niveau du contrôleur. J'ai beaucoup essayé. Mais je ne pouvais pas trouver un moyen. Donc, comme une solution de contournement dans le niveau du contrôleur, j'ai mis une variable de drapeau à «ModelMap» et dans les niveaux «JSP» et «JS», j'ai lu cela et rediriger en utilisant javascript.Redirection de niveau de portlet vers page au moyen de la méthode @RenderMapping

window.location 

Je pense que ce n'est pas une meilleure façon. Après "getConfirmationPage" est la méthode qui est en cours d'exécution lors du chargement de la page.

J'ai aussi essayé

response.sendRedirect("https://stackoverflow.com/?p=1"); 

Mais que l'on pas non plus travaillé très bien pour moi.

Quelqu'un peut-il suggérer de bonnes pratiques. J'utilise spring4/liferay 6.2.4/portlet/JSP comme technologie dans mon projet. C'est une question liée au portlet.

@Controller 
@RequestMapping("VIEW") 
public class ConfirmationController extends AbstractControllerTemplate { 


@RenderMapping 
public ModelAndView getConfirmationPage(
     RenderRequest req, 
     PortletSession session) { 
    ModelMap mm = new ModelMap(); 
//conditionally need to redirect to different liferay page not portlet 
    return new ModelAndView("confirmation", mm); 
} 

modifié Ceci est ma logique mon URL entrante est comme ceci https://stackoverflow.com/?p=2 mais logiquement p = 2 est invalide pour lui. Donc ce que j'essaie de faire est que je le réoriente à p = 1

https://stackoverflow.com/?p=1 
+0

* "Lorsque la page est en cours de chargement, je dois rediriger vers une autre page au niveau du contrôleur" * Pouvez-vous élaborer sur ce point? Avez-vous besoin d'une redirection au niveau HTTP? Dans quelles circonstances? Ou affichez-vous simplement du contenu HTML différent dans votre portlet? –

Répondre

0

Vous pouvez utiliser la ligne de code ci-dessous pour résoudre votre problème. La réponse variable doit être le type de PortletResponse/ResourceResponse.

HttpServletResponse res =PortalUtil.getHttpServletResponse(response) 

Voici un exemple de segment de code pour élaborer votre exigence.

try{ 

      HttpServletResponse res = PortalUtil.getHttpServletResponse(response); 
      String url = PortalUtil.getCurrentCompleteURL(PortalUtil.getHttpServletRequest(req)); 
      String param1=getParamValue(url,"p");//logic here to return param from URL 

      if(param1!=null && param1.trim().length()>0){ 
       requestPageNumber=Integer.parseInt(param1); 
      } 

      if(requestPageNumber<=uiState.getPageNunmber())//valid 
      {} 
      else//invalid 
      { 
       res.sendRedirect("/proposerdetails?p="+uiState.getPageNunmber()); 
      } 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 

Bonne codification !!!!