diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/common/Util.java b/libreplan-webapp/src/main/java/org/libreplan/web/common/Util.java index 127bff48c..9d5add8b0 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/common/Util.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/common/Util.java @@ -198,7 +198,25 @@ public class Util { return (DataBinder) component.getVariable("binder", false); } + private static final ThreadLocal ignoreCreateBindings = new ThreadLocal() { + protected Boolean initialValue() { + return false; + }; + }; + + public static void executeIgnoringCreationOfBindings(Runnable action) { + try { + ignoreCreateBindings.set(true); + action.run(); + } finally { + ignoreCreateBindings.set(false); + } + } + public static void createBindingsFor(org.zkoss.zk.ui.Component result) { + if (ignoreCreateBindings.get()) { + return; + } AnnotateDataBinder binder = new AnnotateDataBinder(result, true); result.setVariable("binder", binder, true); markAsNotReloadedForThisRequest(result); diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/common/entrypoints/EntryPointsHandler.java b/libreplan-webapp/src/main/java/org/libreplan/web/common/entrypoints/EntryPointsHandler.java index f190f8b41..e2a586442 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/common/entrypoints/EntryPointsHandler.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/common/entrypoints/EntryPointsHandler.java @@ -39,6 +39,7 @@ import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.Validate; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.libreplan.web.common.Util; import org.libreplan.web.common.converters.IConverter; import org.libreplan.web.common.converters.IConverterFactory; import org.zkoss.zk.ui.Execution; @@ -283,20 +284,25 @@ public class EntryPointsHandler { return applyIfMatches(controller, matrixParams); } - private boolean applyIfMatches(S controller, + private boolean applyIfMatches(final S controller, Map matrixParams) { flagAlreadyExecutedInThisRequest(); Set matrixParamsNames = matrixParams.keySet(); for (Entry entry : metadata.entrySet()) { - EntryPointMetadata entryPointMetadata = entry.getValue(); + final EntryPointMetadata entryPointMetadata = entry.getValue(); EntryPoint entryPointAnnotation = entryPointMetadata.annotation; HashSet requiredParams = new HashSet(Arrays .asList(entryPointAnnotation.value())); if (matrixParamsNames.equals(requiredParams)) { - Object[] arguments = retrieveArguments(matrixParams, + final Object[] arguments = retrieveArguments(matrixParams, entryPointAnnotation, entryPointMetadata.method .getParameterTypes()); - callMethod(controller, entryPointMetadata.method, arguments); + Util.executeIgnoringCreationOfBindings(new Runnable() { + public void run() { + callMethod(controller, entryPointMetadata.method, + arguments); + } + }); return true; } } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/MultipleTabsPlannerController.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/MultipleTabsPlannerController.java index 9cc20d977..1f5784e77 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/MultipleTabsPlannerController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/MultipleTabsPlannerController.java @@ -471,7 +471,6 @@ public class MultipleTabsPlannerController implements Composer, @Override public void goToOrdersList() { - // ordersTab.show(); getTabsRegistry().show(ordersTab); }