Embed 在自定义portlet中嵌入outofbox portlet

Embed 在自定义portlet中嵌入outofbox portlet,embed,liferay,portlet,Embed,Liferay,Portlet,我正在尝试将日历portlet嵌入到我的自定义portlet中。但却无法做到这一点。我得到以下错误: javax.servlet.ServletException: javax.servlet.jsp.JspException: ServletException in '/html/common/themes/portlet.jsp': File "/html/common/themes/portlet.jsp" not found at

我正在尝试将日历portlet嵌入到我的自定义portlet中。但却无法做到这一点。我得到以下错误:

javax.servlet.ServletException: javax.servlet.jsp.JspException:
    ServletException in '/html/common/themes/portlet.jsp': 

File "/html/common/themes/portlet.jsp" not found
    at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:911)
这是我的班级:

public class Hello extends MVCPortlet {

    public void doView(RenderRequest request, RenderResponse response) 
                    throws IOException, PortletException {

        final String portletId = "47"; //hello world portlet id

        final ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
        HttpServletRequest req = PortalUtil.getHttpServletRequest(request);

        HttpServletResponse res = (HttpServletResponse) request.getAttribute(PortletServlet.PORTLET_SERVLET_RESPONSE);

        ServletContext servletContext = req.getSession().getServletContext();

        PortletPreferences prefs = null;

        try {
            // get the portlet preferences
            prefs = PortletPreferencesFactoryUtil.getPortletPreferences(req, portletId);
        } catch (PortalException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SystemException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        System.out.println("portlet preferences are " + prefs.toString());

        //method 3
        PortletPreferences originalPrefs = null;

        try {
            originalPrefs = PortletPreferencesFactoryUtil.getStrictLayoutPortletSetup(
            themeDisplay.getLayout(), portletId);
        } catch (SystemException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        PortletPreferences targetPrefs = null;

        try {
            targetPrefs = PortletPreferencesFactoryUtil.getStrictLayoutPortletSetup(
            themeDisplay.getLayout(), portletId);
        } catch (SystemException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        for (java.util.Map.Entry<String, String[]> entry : targetPrefs.getMap().entrySet()) {
            targetPrefs.reset(entry.getKey());
        }

        for (java.util.Map.Entry<String, String[]> entry : originalPrefs.getMap().entrySet()) {
            targetPrefs.setValues(entry.getKey(), entry.getValue());
        }

        // Store preferencec.
        targetPrefs.store();

        try {
            //finally render the portlet
            final String portletHtml = RuntimePortletEmbedUtil.renderPortlet(request, response, portletId, "");
        } catch (SystemException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ServletException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
public类Hello扩展了MVCPortlet{
公共视图(RenderRequest请求、RenderResponse响应)
抛出IOException、PortletException{
最后一个字符串portletId=“47”//hello world portlet id
最终主题显示主题显示=(主题显示)request.getAttribute(WebKeys.THEME\u DISPLAY);
HttpServletRequest req=PortalUtil.getHttpServletRequest(请求);
HttpServletResponse res=(HttpServletResponse)request.getAttribute(PortletServlet.PORTLET\u SERVLET\u RESPONSE);
ServletContext=req.getSession().getServletContext();
PortletPreferences prefs=null;
试一试{
//获取portlet首选项
prefs=PortletPreferencesFactoryUtil.getPortletPreferences(req,portletId);
}捕获(PortalException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(系统异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
System.out.println(“portlet首选项是”+prefs.toString());
//方法3
PortletPreferences originalPrefs=null;
试一试{
originalPrefs=PortletPreferencesFactoryUtil.getStrictLayoutPortletSetup(
themeDisplay.getLayout(),portletId);
}捕获(系统异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
PortletPreferences targetPrefs=null;
试一试{
targetPrefs=PortletPreferencesFactoryUtil.getStrictLayoutPortletSetup(
themeDisplay.getLayout(),portletId);
}捕获(系统异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
for(java.util.Map.Entry:targetPrefs.getMap().entrySet()){
reset(entry.getKey());
}
for(java.util.Map.Entry:originalPrefs.getMap().entrySet()){
targetPrefs.setValues(entry.getKey(),entry.getValue());
}
//商店优惠。
targetPrefs.store();
试一试{
//最后呈现portlet
最后一个字符串portletHtml=RuntimePortletEmbedUtil.renderPortlet(请求、响应、portletId,“”);
}捕获(系统异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(ServletException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
}
关于portlet嵌入的任何见解,我已经尝试了来自的建议,但没有任何帮助

有什么建议或方法可以做到这一点吗

我猜在获得正确的portlet首选项和权限以在目标portlet上添加portlet时会遇到一些问题

如果您发现了一些问题的解决方案,请更新