我有一个带有两个渲染方法的控制器,它们采用不同的参数:
class MyController
{
@RenderMapping
public void render(@ModelAttribute ClassX param)
{
// do some stuff
}
@RenderMapping
public void render2(@ModelAttribute ClassY param)
{
// do different stuff
}
}
当然,上面示例中缺少的是spring的一些规范,以了解要调用的渲染方法。我需要根据当前会话中存储的状态来决定这一点。我不能将它指定为一个简单的注释,可以吗?
另一种想法是这样的:
class MyController2
{
@RenderMapping
public void render(RenderRequest request)
{
if (request.getPortletSession().getAttribute(...) ...)
{
ClassX param = retrieveObjectFromRequest(ClassX.class, request);
// do some stuff
}
else
{
ClassY param = retrieveObjectFromRequest(ClassY.class, request);
// do different stuff
}
}
}
但在这种情况下......如何实施retrieveObjectFromRequest
方法?
答案 0 :(得分:0)
好的,在滚动Spring的源代码一段时间后,我找到了一种方法来执行retrieveObjectFromRequest部分:
class MyController
{
@RenderMapping
public void render(WebRequest webRequest)
{
ClassX param = new ClassX();
new WebRequestDataBinder(param).bind(webRequest); // Fills param's properties.
}
}