As we transition to the new Hyland Community, some post links may be temporarily disrupted as we finalize redirects. We apologize for the inconvenience and are working to resolve this as quickly as possible. Details.
aces-config-custom.xml <managed-bean> <description>The bean that holds folder browse state.</description> <managed-bean-name>BrowseBean</managed-bean-name> <managed-bean-class>package.CustomBrowseBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope>….. public class CustomBrowseBean extends BrowseBean { getWindowsView() { //for each node that is returned add this. cont.get(i).addPropertyResolver("selected", resolover ); } } public NodePropertyResolver resolover = new NodePropertyResolver() { /** * */ private static final long serialVersionUID = 903502146868126457L; @Override public Object get(Node node) { resolove the falue, return true or false; } };
public List<Node> getNodes() { List<Node> list= super.getNodes(); for(int i=0;i<list.size();i++) { list.get(i).addpropres..("selected",resolover ); } } public NodePropertyResolver resolover = new NodePropertyResolver() { /** * */ private static final long serialVersionUID = 903502146868126457L; @Override public Object get(Node node) { CHECK YOUR MODEL TO SEE IF NODE IS SELECTED OR NOT. } };
package es.sic.beans; import java.util.List; import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter; import org.alfresco.service.namespace.QName; import org.alfresco.web.bean.BrowseBean; import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.repository.NodePropertyResolver; public class CustomBrowseBean extends BrowseBean{ /** * */ private static final long serialVersionUID = 1L; public static QName PROPERTY_SELECCIONADO = QName.createQName("extension.dm", "propSelected"); @Override public List<Node> getContent() { List<Node> list= super.getNodes(); for(int i=0;i<list.size();i++) { list.get(i).addPropertyResolver("selected",resolver); } return list; } public NodePropertyResolver resolver = new NodePropertyResolver() { /** * */ private static final long serialVersionUID = 903502146868126457L; @Override public Object get(Node node) { boolean selected = DefaultTypeConverter.INSTANCE.booleanValue(getNodeService().getProperty(node.getNodeRef(), PROPERTY_SELECTED)); if(selected){ return true; }else{ return false; } } }; }
javax.faces.FacesException: javax.faces.el.EvaluationException: Cannot get value for expression '#{r.selected}' at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:425) at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:211) at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41) at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:140) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.alfresco.web.app.servlet.AuthenticationFilter.doFilter(AuthenticationFilter.java:95) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619) Caused by: org.apache.jasper.JasperException: javax.faces.el.EvaluationException: Cannot get value for expression '#{r.selected}' at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302) at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:419) … 19 more Caused by: javax.faces.el.EvaluationException: Cannot get value for expression '#{r.selected}' at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:405) at javax.faces.component.UIOutput.getValue(UIOutput.java:80) at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getObjectValue(RendererUtils.java:186) at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getBooleanValue(RendererUtils.java:152) at org.apache.myfaces.shared_impl.renderkit.html.HtmlCheckboxRendererBase.encodeEnd(HtmlCheckboxRendererBase.java:62) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:539) at org.alfresco.web.ui.common.Utils.encodeRecursive(Utils.java:174) at org.alfresco.web.ui.common.Utils.encodeRecursive(Utils.java:169) at org.alfresco.web.ui.common.renderer.data.RichListRenderer$DetailsViewRenderer.renderListRow(RichListRenderer.java:292) at org.alfresco.web.ui.common.renderer.data.RichListRenderer.encodeChildren(RichListRenderer.java:118) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:527) at javax.faces.webapp.UIComponentTag.encodeChildren(UIComponentTag.java:483) at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:364) at org.apache.jsp.jsp.browse.browse_jsp._jspx_meth_a_005frichList_005f1(browse_jsp.java:4734) at org.apache.jsp.jsp.browse.browse_jsp._jspService(browse_jsp.java:1127) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) … 29 more Caused by: javax.faces.el.EvaluationException: Exception getting value of property selected of base of type : org.alfresco.web.bean.repository.MapNode at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:99) at org.apache.myfaces.el.ELParserHelper$MyPropertySuffix.evaluate(ELParserHelper.java:535) at org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145) at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:386) … 46 more Caused by: java.lang.NullPointerException at org.alfresco.service.cmr.repository.datatype.TypeConverter.booleanValue(TypeConverter.java:188) at es.sic.beans.CustomBrowseBean$1.get(CustomBrowseBean.java:40) at org.alfresco.web.bean.repository.QNameNodeMap.get(QNameNodeMap.java:117) at org.alfresco.web.bean.repository.MapNode.get(MapNode.java:157) at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:81) … 49 more
you are submiting on each click as I see. not very good idea…
<script type="text/javascript"> <%– LEGTM Selection Box Javascript Begin –%> window.onload = onLoad; function onLoad() { var items = document.getElementsByName("browse:chkbox"); var selected_values = document.getElementById('browse:selectionlist'); var arr = selected_values.value.split(";"); if (items != null) { for (var i = 0; i < items.length; i++) { var item = items[i]; var item_selected = false; for (var j = 0; j < arr.length; j++) { if (arr[j] == item.title) { item_selected = true } } if (item.checked != item_selected) { item.checked = item_selected; } item.title = item.checked ? "Please click to remove from selection" : "Please click to add to selection"; } } var selectAll = document.getElementById("browse:selectAll"); if (selectAll != null) { var initialSelectAll = document.getElementById("browse:initialSelectAll"); selectAll.checked = (initialSelectAll != null); } } function doselect(value, item) { var selected_values = document.getElementById('browse:selectionlist'); if (item.checked) { if (selected_values.value.length != 0) { selected_values.value = selected_values.value + ";"; } selected_values.value = selected_values.value + value; item.title = "Please click to remove from selection"; } else { var arr = selected_values.value.split(";"); var new_value = ""; for (var i = 0; i < arr.length; i++) { if (arr[i] != "" && arr[i] != value) { if (new_value.length != 0) { new_value = new_value + ";"; } new_value = new_value + arr[i]; } } selected_values.value = new_value; item.title = "Please click to add to selection"; var selectAll = document.getElementById('browse:selectAll'); if (selectAll != null) { selectAll.checked = false; } } } function selectAll(e) { document.forms['browse']['browse:act'].value='browse:select-apply-all'; document.forms['browse']['on_off'].value= e.checked; if (document.forms['browse']['browse:contentRichList:pager'] != null) { document.forms['browse']['browse:contentRichList:pager'].value = document.forms['browse']['browse:contentRichList:pager:pageNamber'].value - 1; } document.forms['browse'].submit(); } ….. <a:actionLink id="select-apply-all" value="" actionListener="#{BatchNavigationBean.setSelectAll}"> <f:param name="on_off" id="on_off" value="" /> </a:actionLink> <h:inputHidden id="selectionlist" value="#{BatchNavigationBean.selection}" /> <h:inputHidden id="initialSelectAll" rendered="#{BatchNavigationBean.allSelected}" /> <a:richList id="contentRichList" binding="#{BrowseBean.contentRichList}" viewMode="#{BrowseBean.browseViewMode}" pageSize="#{BrowseBean.pageSizeContent}" styleClass="recordSet" headerStyleClass="recordSetHeader" rowStyleClass="recordSetRow" altRowStyleClass="recordSetRowAlt" width="100%" value="#{BrowseBean.content}" var="r"> ….. <a:column id="col-sel" style="padding:2px;text-align:left" > <f:facet name="header"> <h:selectBooleanCheckbox id="selectAll" title="Select/Unselect All" onclick="selectAll(this);"/> </f:facet> <a:panel id="panel-sel" > <h:selectBooleanCheckbox id="chkbox" value="false" title="#{r.id}" onclick="javascript:doselect('#{r.id}', this);return true;" /> </a:panel> </a:column>
<managed-bean> <description> Bean used to select nodes on the browse interface </description> <managed-bean-name>BatchNavigationBean</managed-bean-name> <managed-bean-class>your.namespace.BatchNavigationBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>navigator</property-name> <value>#{NavigationBean}</value> </managed-property> <managed-property> <property-name>browseBean</property-name> <value>#{BrowseBean}</value> </managed-property> </managed-bean>
class BatchNavigationBean implements Serializable { transient private NavigationBean navigator = null; transient private BrowseBean browseBean = null; private String currentNodeId = null; // reset the selection when the currentNodeId has changed private String selection = ""; private static Log logger = LogFactory.getLog(BatchNavigationBean.class); public void setSelection(String selection) { this.selection = selection; if (logger.isDebugEnabled()) { logger.debug("Selection set to " + selection); } } public String getSelection() { if ( ((currentNodeId == null) != (this.navigator.getCurrentNodeId() == null)) || ((currentNodeId != null) && !currentNodeId.equals(this.navigator.getCurrentNodeId()))) { currentNodeId = this.navigator.getCurrentNodeId(); selection = ""; } return selection; } public boolean isAllSelected() { return selection.split(";").length == browseBean.getContent().size(); } public void setAllSelected(boolean allSelected) { if (isAllSelected() != allSelected) { if (allSelected) { StringBuffer sb = new StringBuffer(); for(Node node : browseBean.getContent()) { NodeRef nodeRef = node.getNodeRef(); if (sb.length() != 0) { sb.append(";"); } sb.append(node.getId()); } selection = sb.toString(); if (logger.isDebugEnabled()) { logger.debug("Selection set to all nodes"); } } else { selection = ""; if (logger.isDebugEnabled()) { logger.debug("Selection set to no nodes"); } } } } // action to handle "select all" click public void setSelectAll(ActionEvent event) { UIActionLink uIActionLink = (UIActionLink) event.getComponent(); boolean allSelected = "true".equals(uIActionLink.getParameterMap().get("on_off")); setAllSelected(allSelected); } public Set<NodeRef> getSelected() { Set<NodeRef> result = new HashSet<NodeRef>(); String[] array = selection.split(";"); StoreRef storeRef = Repository.getStoreRef(); for (String ref : array) { if (ref != null && !ref.isEmpty()) { NodeRef nodeRef = new NodeRef(storeRef, ref); result.add(nodeRef); } } return result; } // remove selections from current space e.g. when action was performed public void unselectNodes(Set<NodeRef> nodeRefsToUnselect) { Iterator<NodeRef> selectedNode = getSelected().iterator(); while (selectedNode.hasNext()) { NodeRef selectedNodeRef = selectedNode.next(); if (nodeRefsToUnselect.contains(selectedNodeRef)) selectedNode.remove(); } } public void setNavigator(NavigationBean navigator) { this.navigator = navigator; currentNodeId = this.navigator.getCurrentNodeId(); selection = ""; } public NavigationBean getNavigator() { return navigator; } public void setBrowseBean(BrowseBean browseBean) { this.browseBean = browseBean; } public BrowseBean getBrowseBean() { return browseBean; } }