作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为 WebSphere Portal 8 创建一个 portlet,并且想要检索呈现我的 portlet 的页面名称。这很重要,因为根据页面的不同,Portlet 将以不同的方式提供内容
我尝试使用 NavigationSelectionModel API,但认为我没有正确使用它。我希望此代码在渲染 View 之前发生,并将代码放入 doView 方法中。问题是我无法转换 ServletRequest/Response,因为我在 doView 方法中只有 RenderRequest 和 RenderResponse 可用。
public void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
// Declarations
List<ForeignAuthority> faList = new ArrayList<ForeignAuthority>();
String resp;
// Set the MIME type for the render response
response.setContentType(request.getResponseContentType());
// Check if portlet session exists
ForeignAuthoritiesPortletSessionBean sessionBean = getSessionBean(request);
if (sessionBean == null) {
response.getWriter().println("<b>NO PORTLET SESSION YET</b>");
return;
}
try{
Context ctx = new InitialContext();
NavigationSelectionModelHome home = (NavigationSelectionModelHome)
ctx.lookup("portal:service/model/NavigationSelectionModel");
if (home != null) {
NavigationSelectionModelProvider provider =
home.getNavigationSelectionModelProvider();
NavigationSelectionModel model =
provider.getNavigationSelectionModel((ServletRequest)request, (ServletResponse)response);
for (java.util.Iterator i = model.iterator(); i.hasNext(); )
{
NavigationNode node = (NavigationNode) i.next();
if (i.hasNext()) {
System.out.println(node.getObjectID().getUniqueName());
}
}
}
}catch(Exception e){
e.printStackTrace();
}
PortletRequestDispatcher rd = getPortletContext()
.getRequestDispatcher(getJspFilePath(request, VIEW_JSP));
rd.include(request, response);
}
预期结果是检索页面名称或呈现 portlet 的当前页面的唯一名称。
最佳答案
您可以尝试下面的代码片段是否有帮助。您可以获取 URI 值并从中提取页面名称。
HttpServletRequest httpServletRequest = PortletUtils.getHttpServletRequest(renderRequest);httpServletRequest.getRequestURI();
关于java - 如何从WebSphere Portal 页面获取页面名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55838519/
我是一名优秀的程序员,十分优秀!