From e5c267110192441f92849d06cc83ebafd3c03f02 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Mon, 17 Sep 2012 09:09:16 +0200 Subject: [PATCH] OO-342: fix the tag (TextListCompenent) component which doesn't work with multipart/form --- .../impl/elements/TextBoxListElementImpl.java | 14 +++++++++++++- .../textboxlist/TextBoxListComponent.java | 15 ++++++++++++--- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/TextBoxListElementImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/TextBoxListElementImpl.java index 4fc80a8a0c8..37f05d78545 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/TextBoxListElementImpl.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/TextBoxListElementImpl.java @@ -28,7 +28,9 @@ import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.form.flexible.elements.TextBoxListElement; import org.olat.core.gui.components.textboxlist.ResultMapProvider; +import org.olat.core.gui.components.textboxlist.TextBoxListComponent; import org.olat.core.gui.translator.Translator; +import org.olat.core.util.StringHelper; import org.olat.core.util.Util; /** @@ -63,7 +65,17 @@ public class TextBoxListElementImpl extends AbstractTextElement implements TextB @Override public void evalFormRequest(UserRequest ureq) { - component.dispatchRequest(ureq); + String inputId = TextBoxListComponent.INPUT_SUFFIX + getFormDispatchId(); + String cmd = ureq.getParameter(inputId); + if(StringHelper.containsNonWhitespace(cmd)) { + component.dispatchRequest(ureq); + } else { + //this one handle multipart/form too + String submitValue = getRootForm().getRequestParameter(inputId); + if(StringHelper.containsNonWhitespace(submitValue)) { + ((TextBoxListElementComponent)component).setCmd(ureq, submitValue); + } + } } @Override diff --git a/src/main/java/org/olat/core/gui/components/textboxlist/TextBoxListComponent.java b/src/main/java/org/olat/core/gui/components/textboxlist/TextBoxListComponent.java index 12759094308..23431e8290b 100644 --- a/src/main/java/org/olat/core/gui/components/textboxlist/TextBoxListComponent.java +++ b/src/main/java/org/olat/core/gui/components/textboxlist/TextBoxListComponent.java @@ -45,6 +45,7 @@ import org.olat.core.gui.translator.Translator; import org.olat.core.logging.OLATRuntimeException; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; +import org.olat.core.util.StringHelper; /** * Description:<br> @@ -68,6 +69,7 @@ public abstract class TextBoxListComponent extends FormBaseComponentImpl { // if changed, do so also in multiselect.js! public static final String MORE_RESULTS_INDICATOR = "....."; + public static final String INPUT_SUFFIX = "textboxlistinput"; private String inputHint; @@ -147,14 +149,21 @@ public abstract class TextBoxListComponent extends FormBaseComponentImpl { */ @Override protected void doDispatchRequest(UserRequest ureq) { - String inputId = "textboxlistinput" + getFormDispatchId(); String cmd = ureq.getParameter(inputId); if(cmd == null){ return; } + setCmd(ureq, cmd); + } + + public void setCmd(UserRequest ureq, String cmd) { + if(!StringHelper.containsNonWhitespace(cmd)) { + return; + } + String[] splitted = cmd.split(","); - ArrayList<String> cleanedItemValues = new ArrayList<String>(); + List<String> cleanedItemValues = new ArrayList<String>(); for (String item : splitted) { if (!StringUtils.isBlank(item)) cleanedItemValues.add(item.trim()); @@ -176,7 +185,7 @@ public abstract class TextBoxListComponent extends FormBaseComponentImpl { if (logger.isDebug()) logger.debug("doDispatchRequest --> firing textBoxListEvent with current items: " + cleanedItemValues); - fireEvent(ureq, new TextBoxListEvent(cleanedItemValues)); + fireEvent(ureq, new TextBoxListEvent(cleanedItemValues)); } /** -- GitLab