public void updatePublicNavigationalState( ControllerContext controller, PageNavigationalState page, String portletWindowId, Map<String, String[]> update) { PortletInfo info = controller.getPortletInfo(portletWindowId); if (info != null) { NavigationInfo navigationInfo = info.getNavigation(); for (Map.Entry<String, String[]> entry : update.entrySet()) { String id = entry.getKey(); ParameterInfo parameterInfo = navigationInfo.getPublicParameter(id); if (parameterInfo != null) { QName name = parameterInfo.getName(); String[] value = entry.getValue(); if (value.length > 0) { page.setPublicNavigationalState(name, value); } else { page.removePublicNavigationalState(name); } } } } }
public Map<String, String[]> getPublicWindowNavigationalState(ControllerContext controller, PageNavigationalState page, String windowId) { PortletInfo info = controller.getPortletInfo(windowId); // if (info != null) { ParameterMap publicNavigationalState = new ParameterMap(); for (ParameterInfo parameterInfo : info.getNavigation().getPublicParameters()) { String[] parameterValue = page.getPublicNavigationalState(parameterInfo.getName()); // if (parameterValue != null) { String parameterId = parameterInfo.getId(); // We clone the value here so we keep the internal state not potentially changed publicNavigationalState.put(parameterId, parameterValue.clone()); } } // return publicNavigationalState; } // return null; } }