render(Node aNode) 方法在 WebSphere Portal v8.5 中不可用
render(Node aNode) method not available in WebSphere Portal v8.5
我的代码目前有WPS v7,现在我需要迁移到WPS8.5。但是我们用的是下面的方法
无效渲染(节点 aNode)
并且此方法在 WebSphere Portal v8.5 中不可用。
完整代码:
<%@ page session="false" buffer="none" %>
<%@ page import="com.ibm.portal.*,com.ibm.portal.content.*,com.ibm.portal.navigation.*,com.ibm.wps.model.*" %>
<%@ page import="java.util.Iterator" %>
<%
ModelUtil modelUtil = ModelUtil.from(request);
ContentNode currentNode = ((NavigationNode)modelUtil.getNavigationSelectionModel().getSelectedNode( )).getContentNode();
CompositionModel model = modelUtil.getCompositionModel(currentNode.getObjectID());
CompositionNode currentElement = CompositionNodeHelper.getCurrentNode(pageContext.getRequest ());
int counter=0;
String div = null;
boolean divRender = false;
for (Iterator iterator = model.getChildren(currentElement);iterator.hasNext();) {
CompositionNode child = (CompositionNode) iterator.next();
if(false && counter == 0 && model.hasChildren(child)){
div = "<div id=\"main-content-portlet\">";
divRender = true;
}else if (counter == 1){
div = "<div id=\"ibm-content-sidebar\">";
divRender = true;
}
if(divRender){
out.println(div);
}
model.render(child); **** ISSUE IS HERE WITH THE RENDER METHOD
if(divRender){
if(div.indexOf("ibm-content-sidebar") > 0){
out.println("<div id=\"ibm-contact-module\"></div>");
out.println("<div id=\"ibm-merchandising-module\"></div>");
out.println("</div><!-- ibm-content-sidebar end -->");
}else {
}
}
counter++;
}
%>
此 render() 方法在 WPS v8.5 的模型调用中不可用...是否有任何替代方法可供我继续使用或出路是什么。
早日回答将非常有帮助和感激。提前致谢
看来您正在尝试使用旧的皮肤代码来呈现 portlet,您需要迁移皮肤以使用 8.5 您最好的时间是创建一个新的 8.5 主题和皮肤,并在外观上镶边并感觉而不是尝试迁移您的旧代码。
您可以抓住 8.0 皮肤并将它们放在适当的位置,然后使用
<门户皮肤:layoutNodeRender/>
渲染节点,它来自这个标签库
<%@ taglib uri="http://www.ibm.com/xmlns/prod/websphere/portal/v8.0/portal-skin" prefix="portal-skin" %>
我的代码目前有WPS v7,现在我需要迁移到WPS8.5。但是我们用的是下面的方法
无效渲染(节点 aNode)
并且此方法在 WebSphere Portal v8.5 中不可用。
完整代码:
<%@ page session="false" buffer="none" %>
<%@ page import="com.ibm.portal.*,com.ibm.portal.content.*,com.ibm.portal.navigation.*,com.ibm.wps.model.*" %>
<%@ page import="java.util.Iterator" %>
<%
ModelUtil modelUtil = ModelUtil.from(request);
ContentNode currentNode = ((NavigationNode)modelUtil.getNavigationSelectionModel().getSelectedNode( )).getContentNode();
CompositionModel model = modelUtil.getCompositionModel(currentNode.getObjectID());
CompositionNode currentElement = CompositionNodeHelper.getCurrentNode(pageContext.getRequest ());
int counter=0;
String div = null;
boolean divRender = false;
for (Iterator iterator = model.getChildren(currentElement);iterator.hasNext();) {
CompositionNode child = (CompositionNode) iterator.next();
if(false && counter == 0 && model.hasChildren(child)){
div = "<div id=\"main-content-portlet\">";
divRender = true;
}else if (counter == 1){
div = "<div id=\"ibm-content-sidebar\">";
divRender = true;
}
if(divRender){
out.println(div);
}
model.render(child); **** ISSUE IS HERE WITH THE RENDER METHOD
if(divRender){
if(div.indexOf("ibm-content-sidebar") > 0){
out.println("<div id=\"ibm-contact-module\"></div>");
out.println("<div id=\"ibm-merchandising-module\"></div>");
out.println("</div><!-- ibm-content-sidebar end -->");
}else {
}
}
counter++;
}
%>
此 render() 方法在 WPS v8.5 的模型调用中不可用...是否有任何替代方法可供我继续使用或出路是什么。
早日回答将非常有帮助和感激。提前致谢
看来您正在尝试使用旧的皮肤代码来呈现 portlet,您需要迁移皮肤以使用 8.5 您最好的时间是创建一个新的 8.5 主题和皮肤,并在外观上镶边并感觉而不是尝试迁移您的旧代码。
您可以抓住 8.0 皮肤并将它们放在适当的位置,然后使用 <门户皮肤:layoutNodeRender/> 渲染节点,它来自这个标签库 <%@ taglib uri="http://www.ibm.com/xmlns/prod/websphere/portal/v8.0/portal-skin" prefix="portal-skin" %>