diff --git a/search/src/org/labkey/search/SearchController.java b/search/src/org/labkey/search/SearchController.java index d5ad92ba94d..20036ac9877 100644 --- a/search/src/org/labkey/search/SearchController.java +++ b/search/src/org/labkey/search/SearchController.java @@ -29,6 +29,7 @@ import org.labkey.api.action.ExportAction; import org.labkey.api.action.FormHandlerAction; import org.labkey.api.action.FormViewAction; +import org.labkey.api.action.HasBindParameters; import org.labkey.api.action.ReadOnlyApiAction; import org.labkey.api.action.ReturnUrlForm; import org.labkey.api.action.SimpleRedirectAction; @@ -52,7 +53,6 @@ import org.labkey.api.security.permissions.ApplicationAdminPermission; import org.labkey.api.security.permissions.ReadPermission; import org.labkey.api.settings.LookAndFeelProperties; -import org.labkey.api.util.ConfigurationException; import org.labkey.api.util.ExceptionUtil; import org.labkey.api.util.HtmlString; import org.labkey.api.util.HtmlStringBuilder; @@ -77,6 +77,8 @@ import org.labkey.search.model.IndexInspector; import org.labkey.search.model.LuceneDirectoryType; import org.labkey.search.model.SearchPropertyManager; +import org.springframework.beans.MutablePropertyValues; +import org.springframework.beans.PropertyValues; import org.springframework.validation.BindException; import org.springframework.validation.Errors; import org.springframework.web.servlet.ModelAndView; @@ -91,6 +93,8 @@ import java.util.Objects; import java.util.concurrent.TimeUnit; +import static org.labkey.api.action.BaseViewAction.springBindParameters; + public class SearchController extends SpringActionController { private static final DefaultActionResolver _actionResolver = new DefaultActionResolver(SearchController.class); @@ -384,7 +388,7 @@ public void addNavTrail(NavTree root) @AdminConsoleAction - public class IndexContentsAction extends SimpleViewAction + public static class IndexContentsAction extends SimpleViewAction { @Override public ModelAndView getView(Object o, BindException errors) @@ -430,7 +434,7 @@ public void export(ExportForm form, HttpServletResponse response, BindException /** for selenium testing */ @RequiresSiteAdmin - public class WaitForIdleAction extends SimpleRedirectAction + public static class WaitForIdleAction extends SimpleRedirectAction { @Override public URLHelper getRedirectURL(Object o) throws Exception @@ -569,7 +573,7 @@ public ApiResponse execute(SearchForm form, BindException errors) final Path contextPath = Path.parse(getViewContext().getContextPath()); - final String query = form.getQueryString() + final String query = form.getQ() .replaceAll("(? fields) { _fields = fields; } + + @Override + public @NotNull BindException bindParameters(PropertyValues m) + { + MutablePropertyValues mpvs = new MutablePropertyValues(m); + var q = mpvs.getPropertyValue("q"); + if (null != q && q.getValue() instanceof String[] arr) + { + mpvs.removePropertyValue("q"); + mpvs.addPropertyValue("q", StringUtils.join(arr," ")); + } + return springBindParameters(this, "form", mpvs); + } } @@ -1099,7 +1109,7 @@ protected void audit(SearchForm form) ViewContext ctx = getViewContext(); String comment = form.getComment(); - audit(ctx.getUser(), ctx.getContainer(), form.getQueryString(), comment); + audit(ctx.getUser(), ctx.getContainer(), form.getQ(), comment); } diff --git a/search/src/org/labkey/search/view/search.jsp b/search/src/org/labkey/search/view/search.jsp index 3fd522f86e3..b17c876ad09 100644 --- a/search/src/org/labkey/search/view/search.jsp +++ b/search/src/org/labkey/search/view/search.jsp @@ -224,13 +224,11 @@ Path contextPath = Path.parse(ctx.getContextPath()); SearchService ss = SearchService.get(); - List q = new ArrayList<>(Arrays.asList(form.getQ())); - String value = StringUtils.trim(StringUtils.join(q, " ")); SearchResultTemplate template = form.getSearchResultTemplate(); SearchScope scope = (null == template.getSearchScope() ? form.getSearchScope() : template.getSearchScope()); String categories = (null == template.getCategories() ? form.getCategory() : template.getCategories()); Set selectedCategories = categories == null ? Collections.emptySet() : new CaseInsensitiveHashSet(categories.split("\\+")); - String queryString = form.getQueryString(); + String queryString = form.getQ(); String sortField = form.getSortField(); boolean invertSort = form.isInvertSort(); @@ -293,7 +291,7 @@ >
- " formGroup="false" value="<%=value%>"/> + " formGroup="false" value="<%=queryString%>"/> <% if (showAdvancedUI) { %>