diff --git a/query/src/org/labkey/query/controllers/GetQueryDetailsAction.java b/query/src/org/labkey/query/controllers/GetQueryDetailsAction.java index a90c5a14d0d..41fd33bb66a 100644 --- a/query/src/org/labkey/query/controllers/GetQueryDetailsAction.java +++ b/query/src/org/labkey/query/controllers/GetQueryDetailsAction.java @@ -18,12 +18,15 @@ import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.jetbrains.annotations.NotNull; import org.json.JSONArray; import org.json.JSONObject; import org.labkey.api.action.Action; import org.labkey.api.action.ActionType; import org.labkey.api.action.ApiResponse; import org.labkey.api.action.ApiSimpleResponse; +import org.labkey.api.action.BaseViewAction; +import org.labkey.api.action.HasBindParameters; import org.labkey.api.action.ReadOnlyApiAction; import org.labkey.api.collections.CaseInsensitiveHashMap; import org.labkey.api.collections.CaseInsensitiveHashSet; @@ -63,6 +66,7 @@ import org.labkey.query.CustomViewUtil; import org.labkey.query.QueryDefinitionImpl; import org.labkey.query.persist.QueryDef; +import org.springframework.beans.PropertyValues; import org.springframework.validation.BindException; import java.util.ArrayList; @@ -460,7 +464,7 @@ protected List> getDefViewColProps(QueryView view) return colProps; } - public static class Form + public static class Form implements HasBindParameters { private String _queryName; private String _schemaName; @@ -496,11 +500,6 @@ public String[] getViewName() return _viewName; } - public void setViewName(String[] viewName) - { - _viewName = viewName; - } - public String getFk() { return _fk; @@ -550,5 +549,21 @@ public void setIncludeTriggers(boolean includeTriggers) { _includeTriggers = includeTriggers; } + + @Override + public @NotNull BindException bindParameters(PropertyValues params) + { + // GitHub Issue #936 : manually bind the viewName parameter + var viewName = params.getPropertyValue("viewName"); + if (viewName != null) + { + var value = viewName.getValue(); + if (value instanceof String[] strs) + _viewName = strs; + else if (value instanceof String str) + _viewName = new String[] { str }; + } + return BaseViewAction.springBindParameters(this, "form", params); + } } }