2010-08-11 68 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'参数调用。