2015-04-03 42 views
0

我想從動作階段傳遞字符串值以呈現階段。在這兩個教程tut1tut2它說我可以做到這一點:從動作階段傳遞值來呈現portlet中的階段

在行動(),你可以調用ActionResponse.setRenderParameter()方法來設置所有的字符串值,並使用RenderRequest.getParameter檢索相同的()以下呈現調用。

這裏是我的觀看模式控制器

GraphViewController.java我的日誌

package graphui; 

import com.liferay.portal.kernel.util.ParamUtil; 
import javax.portlet.ActionRequest; 
import javax.portlet.ActionResponse; 
import javax.portlet.RenderRequest; 
import javax.portlet.RenderResponse; 
import javax.portlet.ResourceRequest; 
import javax.portlet.ResourceResponse; 
import org.apache.log4j.Logger; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.ModelMap; 
import org.springframework.web.bind.annotation.ModelAttribute; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.portlet.ModelAndView; 
import org.springframework.web.portlet.bind.annotation.ActionMapping; 
import org.springframework.web.portlet.bind.annotation.RenderMapping; 
import org.springframework.web.portlet.bind.annotation.ResourceMapping; 

/** 
* 
* Controller for VIEW mode of portlet. 
*/ 
@Controller("graphViewController") 
@RequestMapping(value = "VIEW") 
public class GraphViewController{ 

    private static final Logger logger = Logger.getLogger(GraphViewController.class); 

    @ActionMapping(GraphUIConstants.SUBMIT_FORM) 
    public void handleActionRequest(ActionRequest request, ActionResponse response)throws Exception { 

      logger.info("action phase executed"); 

      response.setRenderParameter("par1", "par1"); 

    } 

    @RenderMapping 
    public ModelAndView handleRenderRequest(RenderRequest request, RenderResponse response, ModelMap model) { 

     logger.info("render phase executed"); 

     logger.info(request.getAttribute("par1")); 

    } 

} 

結果:

17:43:06,196 INFO [GraphViewController:56] render phase executed 
17:43:06,205 INFO [GraphViewController:58] null 
17:43:09,491 INFO [GraphViewController:40] action phase executed 
17:43:09,498 INFO [GraphViewController:56] render phase executed 
17:43:09,499 INFO [GraphViewController:58] null 

的portlet.xml

<?xml version='1.0' encoding='UTF-8' ?> 
<portlet-app 
    xmlns='http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd' 
    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 
    xsi:schemaLocation='http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd' 
    version='2.0'> 

    <portlet> 
     <portlet-name>GraphUI</portlet-name> 
     <portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class> 
     <init-param> 
      <name>contextConfigLocation</name> 
      <value>/WEB-INF/GraphUI-portlet.xml</value> 
     </init-param> 
     <supports> 
      <mime-type>text/html</mime-type> 
      <portlet-mode>VIEW</portlet-mode> 
      <portlet-mode>EDIT</portlet-mode> 
     </supports> 
     <supported-locale>en</supported-locale> 
     <resource-bundle>content.graph</resource-bundle> 
    </portlet> 


</portlet-app> 
+1

要設置渲染參數和您要取請求屬性,這就是爲什麼它總是爲空。請糾正您的代碼。 – 2015-04-03 19:39:24

回答

1

您引用正確

...檢索使用的RenderRequest相同。 的getParameter()

然後使用

request.getAttribute("par1") 

只要按照教程和使用getParameter()讓你的價值