我正在开发一个自定义portlet(编辑:我正在扩展MVCPortlet),并查看几个示例和教程,我发现当覆盖doView(RenderRequest,RenderResponse)方法时,在它的末尾总是至少有这个线:
super.doView(renderRequest, renderResponse);
或这个:
include(viewJSP, renderRequest, renderResponse);
如果我没有放置其中任何一个,我的portlet不会呈现任何内容,但是其中任何一个都可以解决问题.
我想知道我应该使用哪一个,为什么我需要添加它们以使我的portlet工作.
谢谢!
所以你必须扩展MVCPortlet课程.这两个调用都用于在处理完成后包含 JSP doView.如果您查看此类的源代码,那么您将了解流程是什么,下面是我的解释:
super.doView(renderRequest,renderResponse);
这包括默认的JSP view.jsp,即您可能(或不)已经配置portlet.xml如下:
<init-param>
    <name>view-template</name>
    <value>/html/view.jsp</value>
</init-param>
这个超类方法什么都不做,只是include(viewJSP, renderRequest, renderResponse);在最后调用方法.
include(viewJSP,renderRequest,renderResponse);
此方法包括您为参数指定的任何JSP路径viewJSP.因此,通过此调用,您可以为不同的条件指定包含不同的JSP,如下所示:
if (isThisTrue) {
    include("/html/myCustomPortlet/view.jsp", renderRequest, renderResponse);
} else if (isThisTrueThen) {
    include("/html/myCustomPortlet/first/another_view.jsp", renderRequest, renderResponse);
} else {
    super.doView(renderRequest, renderResponse);
}
因此,根据您的要求,您可以使用任何两个或两者的混合,如上所示.希望这可以帮助.
| 归档时间: | 
 | 
| 查看次数: | 2263 次 | 
| 最近记录: |