2010-08-11 46 views
2

我已經擁有很多的渲染和操作方法的portlet:這應該引起Liferay的門戶不是要求正確的渲染方法(忽略的setRenderParameter)

@Controller 
@RequestMapping("VIEW") 
public class CartController { 
    @RenderMapping() // default render method 
    public String defaultRender(RenderRequest req, RenderResponse res, Model model) throws PortalException, SystemException { 
    ... 
    } 

    @RenderMapping(params="action=showCustInfo") 
    public String showCustInfo(RenderRequest req, RenderResponse res, Model model) throws PortalException, SystemException { 
    ... 
    } 

    @ActionMapping(params="action=acceptCart") 
public void acceptCart(ActionRequest req, ActionResponse res, Model model) throws PortalException, SystemException { 
    ... 
    res.setRenderParameter("action", "showCustInfo"); 
    ... 
    } 

在上面的代碼中,方法acceptCart將呈現參數showCustInfo在渲染階段被調用。

問題是每次都會調用默認的渲染方法。我錯過了什麼?

回答

1

的原因(似乎)是,行動 -parameter沒有更換時我吩咐

res.setRenderParameter("action", "showCustInfo"); 

而不是替換值,春季增加此值如下操作參數(僞) :

// Before: 
params['action'] = ['acceptCart'] // all req params in Spring are handled as String arrays.. 

// After: 
params['action'] = ['acceptCart','showCustInfo'] 

在這一點上,Spring似乎並不知道該怎麼做,並調用默認的render方法。 我通過使用渲染參數('render')的不同參數名稱來解決這個問題。因此現在動作被'action'參數調用,渲染器被'render'參數調用。