diff --git a/source/java/org/alfresco/web/app/servlet/ExternalAccessServlet.java b/source/java/org/alfresco/web/app/servlet/ExternalAccessServlet.java index 5fc775e242..7f60d45f54 100644 --- a/source/java/org/alfresco/web/app/servlet/ExternalAccessServlet.java +++ b/source/java/org/alfresco/web/app/servlet/ExternalAccessServlet.java @@ -28,14 +28,8 @@ import java.io.IOException; import java.text.MessageFormat; import java.util.StringTokenizer; -import javax.faces.FactoryFinder; import javax.faces.application.NavigationHandler; -import javax.faces.application.ViewHandler; -import javax.faces.component.UIViewRoot; import javax.faces.context.FacesContext; -import javax.faces.context.FacesContextFactory; -import javax.faces.lifecycle.Lifecycle; -import javax.faces.lifecycle.LifecycleFactory; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -259,10 +253,6 @@ public class ExternalAccessServlet extends BaseServlet // perform the appropriate JSF navigation outcome NavigationHandler navigationHandler = fc.getApplication().getNavigationHandler(); navigationHandler.handleNavigation(fc, null, outcome); - LifecycleFactory lifecycleFactory = (LifecycleFactory)FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY); - Lifecycle lifecycle = lifecycleFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE); - lifecycle.render(fc); - return; } else if (OUTCOME_DIALOG.equals(outcome) || OUTCOME_WIZARD.equals(outcome)) { diff --git a/source/java/org/alfresco/web/ui/common/component/data/UIRichList.java b/source/java/org/alfresco/web/ui/common/component/data/UIRichList.java index afe12eb8fe..95d92cad36 100644 --- a/source/java/org/alfresco/web/ui/common/component/data/UIRichList.java +++ b/source/java/org/alfresco/web/ui/common/component/data/UIRichList.java @@ -114,6 +114,7 @@ public class UIRichList extends UIComponentBase implements IDataContainer this.pageSize = ((Integer)values[7]).intValue(); this.initialSortColumn = (String)values[8]; this.initialSortDescending = ((Boolean)values[9]).booleanValue(); + this.refreshOnBind = ((Boolean)values[10]).booleanValue(); } /** @@ -121,18 +122,19 @@ public class UIRichList extends UIComponentBase implements IDataContainer */ public Object saveState(FacesContext context) { - Object values[] = new Object[10]; - // standard component attributes are saved by the super class - values[0] = super.saveState(context); - values[1] = Integer.valueOf(this.currentPage); - values[2] = this.sortColumn; - values[3] = (this.sortDescending ? Boolean.TRUE : Boolean.FALSE); - values[4] = this.value; - values[5] = this.dataModel; - values[6] = this.viewMode; - values[7] = Integer.valueOf(this.pageSize); - values[8] = this.initialSortColumn; - values[9] = (this.initialSortDescending ? Boolean.TRUE : Boolean.FALSE); + Object values[] = new Object[] { + // standard component attributes are saved by the super class + super.saveState(context), + Integer.valueOf(this.currentPage), + this.sortColumn, + (this.sortDescending ? Boolean.TRUE : Boolean.FALSE), + this.value, + this.dataModel, + this.viewMode, + Integer.valueOf(this.pageSize), + this.initialSortColumn, + (this.initialSortDescending ? Boolean.TRUE : Boolean.FALSE), + this.refreshOnBind}; return (values); } @@ -203,6 +205,31 @@ public class UIRichList extends UIComponentBase implements IDataContainer this.viewMode = viewMode; } + /** + * Get the refreshOnBind flag. + * + * @return the refreshOnBind + */ + public boolean getRefreshOnBind() + { + ValueBinding vb = getValueBinding("refreshOnBind"); + if (vb != null) + { + this.refreshOnBind = (Boolean)vb.getValue(getFacesContext()); + } + return this.refreshOnBind; + } + + /** + * Set the refreshOnBind flag. True to force the list to retrieve bound data on bind(). + * + * @param refreshOnBind the refreshOnBind + */ + public void setRefreshOnBind(boolean refreshOnBind) + { + this.refreshOnBind = refreshOnBind; + } + /** * Return the UI Component to be used as the "no items available" message * @@ -414,6 +441,11 @@ public class UIRichList extends UIComponentBase implements IDataContainer */ public void bind() { + if (getRefreshOnBind() == true) + { + this.value = null; + this.dataModel = null; + } int rowCount = getDataModel().size(); // if a page size is specified, then we use that int pageSize = getPageSize(); @@ -528,6 +560,7 @@ public class UIRichList extends UIComponentBase implements IDataContainer private int pageSize = -1; private String initialSortColumn = null; private boolean initialSortDescending = false; + private boolean refreshOnBind = false; // transient component state that exists during a single page refresh only private int rowIndex = -1; diff --git a/source/java/org/alfresco/web/ui/common/tag/data/RichListTag.java b/source/java/org/alfresco/web/ui/common/tag/data/RichListTag.java index 7c67272026..bc6187d13b 100644 --- a/source/java/org/alfresco/web/ui/common/tag/data/RichListTag.java +++ b/source/java/org/alfresco/web/ui/common/tag/data/RichListTag.java @@ -72,6 +72,7 @@ public class RichListTag extends BaseComponentTag this.headerStyleClass = null; this.width = null; this.pageSize = null; + this.refreshOnBind = null; } /** @@ -93,6 +94,7 @@ public class RichListTag extends BaseComponentTag setStringProperty(component, "headerStyleClass", this.headerStyleClass); setStringProperty(component, "width", this.width); setIntProperty(component, "pageSize", this.pageSize); + setBooleanProperty(component, "refreshOnBind", this.refreshOnBind); } @@ -228,11 +230,24 @@ public class RichListTag extends BaseComponentTag { this.headerStyleClass = headerStyleClass; } + + /** + * Set the refreshOnBind flag. True to force the list to retrieve bound data on bind(). + * + * @param refreshOnBind the refreshOnBind + */ + public void setRefreshOnBind(String refreshOnBind) + { + this.refreshOnBind = refreshOnBind; + } // ------------------------------------------------------------------------------ // Private data + /** the refreshOnBind */ + private String refreshOnBind; + /** the header row CSS Class */ private String headerStyleClass; diff --git a/source/web/WEB-INF/alfresco.tld b/source/web/WEB-INF/alfresco.tld index fa121887dd..01563cc745 100644 --- a/source/web/WEB-INF/alfresco.tld +++ b/source/web/WEB-INF/alfresco.tld @@ -210,6 +210,12 @@ false true + + + refreshOnBind + false + true + diff --git a/source/web/jsp/workflow/pooled-tasks-todo-dashlet.jsp b/source/web/jsp/workflow/pooled-tasks-todo-dashlet.jsp index 3586bd9d34..5ab17bd0aa 100644 --- a/source/web/jsp/workflow/pooled-tasks-todo-dashlet.jsp +++ b/source/web/jsp/workflow/pooled-tasks-todo-dashlet.jsp @@ -9,7 +9,7 @@ styleClass="recordSet" headerStyleClass="recordSetHeader" rowStyleClass="recordSetRow" altRowStyleClass="recordSetRowAlt" width="100%" pageSize="10" initialSortColumn="created" initialSortDescending="true" - rendered="#{not empty WorkflowBean.pooledTasks}"> + rendered="#{not empty WorkflowBean.pooledTasks}" refreshOnBind="true"> <%-- Primary column for details view mode --%> diff --git a/source/web/jsp/workflow/tasks-active-dashlet.jsp b/source/web/jsp/workflow/tasks-active-dashlet.jsp index e6f5ba69d4..7d4c789f13 100644 --- a/source/web/jsp/workflow/tasks-active-dashlet.jsp +++ b/source/web/jsp/workflow/tasks-active-dashlet.jsp @@ -9,7 +9,7 @@ styleClass="recordSet" headerStyleClass="recordSetHeader" rowStyleClass="recordSetRow" altRowStyleClass="recordSetRowAlt" width="100%" pageSize="10" initialSortColumn="created" initialSortDescending="true" - rendered="#{not empty WorkflowBean.allActiveTasks}"> + rendered="#{not empty WorkflowBean.allActiveTasks}" refreshOnBind="true"> <%-- Primary column for details view mode --%> diff --git a/source/web/jsp/workflow/tasks-completed-dashlet.jsp b/source/web/jsp/workflow/tasks-completed-dashlet.jsp index 9baac8e505..2223db2128 100644 --- a/source/web/jsp/workflow/tasks-completed-dashlet.jsp +++ b/source/web/jsp/workflow/tasks-completed-dashlet.jsp @@ -9,7 +9,7 @@ styleClass="recordSet" headerStyleClass="recordSetHeader" rowStyleClass="recordSetRow" altRowStyleClass="recordSetRowAlt" width="100%" pageSize="10" initialSortColumn="bpm:completionDate" initialSortDescending="true" - rendered="#{not empty WorkflowBean.tasksCompleted}"> + rendered="#{not empty WorkflowBean.tasksCompleted}" refreshOnBind="true"> <%-- Primary column for details view mode --%> diff --git a/source/web/jsp/workflow/tasks-todo-dashlet.jsp b/source/web/jsp/workflow/tasks-todo-dashlet.jsp index 31e6efb96f..82add93d6d 100644 --- a/source/web/jsp/workflow/tasks-todo-dashlet.jsp +++ b/source/web/jsp/workflow/tasks-todo-dashlet.jsp @@ -9,7 +9,7 @@ styleClass="recordSet" headerStyleClass="recordSetHeader" rowStyleClass="recordSetRow" altRowStyleClass="recordSetRowAlt" width="100%" pageSize="10" initialSortColumn="created" initialSortDescending="true" - rendered="#{not empty WorkflowBean.tasksToDo}"> + rendered="#{not empty WorkflowBean.tasksToDo}" refreshOnBind="true"> <%-- Primary column for details view mode --%>