diff --git a/src/main/java/org/codelibs/fess/app/web/base/FessAdminAction.java b/src/main/java/org/codelibs/fess/app/web/base/FessAdminAction.java index 9e6368e17..5fceb3e70 100644 --- a/src/main/java/org/codelibs/fess/app/web/base/FessAdminAction.java +++ b/src/main/java/org/codelibs/fess/app/web/base/FessAdminAction.java @@ -44,17 +44,6 @@ public abstract class FessAdminAction extends FessBaseAction { // =================================================================================== // Small Helper // ============ - protected void saveInfo(final VaMessenger validationMessagesLambda) { - final FessMessages messages = createMessages(); - validationMessagesLambda.message(messages); - sessionManager.info().save(messages); - } - - protected void saveError(final VaMessenger validationMessagesLambda) { - final FessMessages messages = createMessages(); - validationMessagesLambda.message(messages); - sessionManager.errors().save(messages); - } protected void write(final String path, final byte[] data) { LdiFileUtil.write(path, data); diff --git a/src/main/java/org/codelibs/fess/app/web/base/FessBaseAction.java b/src/main/java/org/codelibs/fess/app/web/base/FessBaseAction.java index 0b98f5fea..5d583914b 100644 --- a/src/main/java/org/codelibs/fess/app/web/base/FessBaseAction.java +++ b/src/main/java/org/codelibs/fess/app/web/base/FessBaseAction.java @@ -47,6 +47,7 @@ import org.lastaflute.web.ruts.process.ActionRuntime; import org.lastaflute.web.servlet.session.SessionManager; import org.lastaflute.web.validation.ActionValidator; import org.lastaflute.web.validation.LaValidatable; +import org.lastaflute.web.validation.VaMessenger; /** * @author jflute @@ -151,4 +152,20 @@ public abstract class FessBaseAction extends TypicalAction // has several interf public FessMessages createMessages() { // application may call return new FessMessages(); // overriding to change return type to concrete-class } + + // =================================================================================== + // Small Helper + // ============ + + protected void saveInfo(final VaMessenger validationMessagesLambda) { + final FessMessages messages = createMessages(); + validationMessagesLambda.message(messages); + sessionManager.info().save(messages); + } + + protected void saveError(final VaMessenger validationMessagesLambda) { + final FessMessages messages = createMessages(); + validationMessagesLambda.message(messages); + sessionManager.errors().save(messages); + } } diff --git a/src/main/java/org/codelibs/fess/app/web/base/FessSearchAction.java b/src/main/java/org/codelibs/fess/app/web/base/FessSearchAction.java index ddc1b1364..dfe46926f 100644 --- a/src/main/java/org/codelibs/fess/app/web/base/FessSearchAction.java +++ b/src/main/java/org/codelibs/fess/app/web/base/FessSearchAction.java @@ -42,6 +42,7 @@ import org.codelibs.fess.screenshot.ScreenShotManager; import org.dbflute.optional.OptionalThing; import org.lastaflute.web.login.LoginManager; import org.lastaflute.web.response.ActionResponse; +import org.lastaflute.web.response.HtmlResponse; import org.lastaflute.web.ruts.process.ActionRuntime; import org.lastaflute.web.util.LaRequestUtil; @@ -184,4 +185,9 @@ public abstract class FessSearchAction extends FessBaseAction { } } + protected HtmlResponse redirectToRoot() { + final String contextPath = request.getServletContext().getContextPath(); + return newHtmlResponseAsRediect(StringUtil.isBlank(contextPath) ? "/" : contextPath); + + } } diff --git a/src/main/java/org/codelibs/fess/app/web/search/SearchAction.java b/src/main/java/org/codelibs/fess/app/web/search/SearchAction.java index 5dbbc77ec..864125dac 100644 --- a/src/main/java/org/codelibs/fess/app/web/search/SearchAction.java +++ b/src/main/java/org/codelibs/fess/app/web/search/SearchAction.java @@ -112,42 +112,45 @@ public class SearchAction extends FessSearchAction { if (StringUtil.isBlank(form.q) && form.fields.isEmpty()) { // redirect to index page form.q = null; - return redirect(RootAction.class); + return redirectToRoot(); } - return asHtml(path_SearchJsp).renderWith(data -> { + try { updateSearchParams(form); buildLabelParams(form.fields); form.lang = searchService.getLanguages(request, form); - try { - final WebRenderData renderData = new WebRenderData(data); - searchService.search(request, form, renderData); + final WebRenderData renderData = new WebRenderData(); + searchService.search(request, form, renderData); + return asHtml(path_SearchJsp).renderWith(data -> { + renderData.register(data); // favorite or screenshot - if (favoriteSupport || screenShotManager != null) { - final String queryId = renderData.getQueryId(); - final List> documentItems = renderData.getDocumentItems(); - userInfoHelper.storeQueryId(queryId, documentItems); - if (screenShotManager != null) { - screenShotManager.storeRequest(queryId, documentItems); - data.register("screenShotSupport", true); + if (favoriteSupport || screenShotManager != null) { + final String queryId = renderData.getQueryId(); + final List> documentItems = renderData.getDocumentItems(); + userInfoHelper.storeQueryId(queryId, documentItems); + if (screenShotManager != null) { + screenShotManager.storeRequest(queryId, documentItems); + data.register("screenShotSupport", true); + } } - } - } catch (final InvalidQueryException e) { - if (logger.isDebugEnabled()) { - logger.debug(e.getMessage(), e); - } - throwValidationError(e.getMessageCode(), () -> asHtml(path_ErrorJsp)); - } catch (final ResultOffsetExceededException e) { - if (logger.isDebugEnabled()) { - logger.debug(e.getMessage(), e); - } - throwValidationError(messages -> { - messages.addErrorsResultSizeExceeded(GLOBAL); - }, () -> asHtml(path_ErrorJsp)); + data.register("displayQuery", getDisplayQuery(form, labelTypeHelper.getLabelTypeItemList())); + data.register("pagingQuery", getPagingQuery(form)); + }); + } catch (final InvalidQueryException e) { + if (logger.isDebugEnabled()) { + logger.debug(e.getMessage(), e); } - data.register("displayQuery", getDisplayQuery(form, labelTypeHelper.getLabelTypeItemList())); - data.register("pagingQuery", getPagingQuery(form)); - }); + saveError(e.getMessageCode()); + return redirectToRoot(); + } catch (final ResultOffsetExceededException e) { + if (logger.isDebugEnabled()) { + logger.debug(e.getMessage(), e); + } + saveError(messages -> { + messages.addErrorsResultSizeExceeded(GLOBAL); + }); + return redirectToRoot(); + } } protected HtmlResponse doMove(final SearchForm form, final int move) { @@ -246,118 +249,26 @@ public class SearchAction extends FessSearchAction { } protected static class WebRenderData extends SearchRenderData { - private final RenderData data; - WebRenderData(final RenderData data) { - this.data = data; - } - - @Override - public void setQueryId(final String queryId) { + public void register(RenderData data) { data.register("queryId", queryId); - super.setQueryId(queryId); - } - - @Override - public void setDocumentItems(final List> documentItems) { data.register("documentItems", documentItems); - super.setDocumentItems(documentItems); - } - - @Override - public void setFacetResponse(final FacetResponse facetResponse) { data.register("facetResponse", facetResponse); - super.setFacetResponse(facetResponse); - } - - @Override - public void setAppendHighlightParams(final String appendHighlightParams) { data.register("appendHighlightParams", appendHighlightParams); - super.setAppendHighlightParams(appendHighlightParams); - } - - @Override - public void setExecTime(final String execTime) { data.register("execTime", execTime); - super.setExecTime(execTime); - } - - @Override - public void setPageSize(final int pageSize) { data.register("pageSize", pageSize); - super.setPageSize(pageSize); - } - - @Override - public void setCurrentPageNumber(final int currentPageNumber) { data.register("currentPageNumber", currentPageNumber); - super.setCurrentPageNumber(currentPageNumber); - } - - @Override - public void setAllRecordCount(final long allRecordCount) { data.register("allRecordCount", allRecordCount); - super.setAllRecordCount(allRecordCount); - } - - @Override - public void setAllPageCount(final int allPageCount) { data.register("allPageCount", allPageCount); - super.setAllPageCount(allPageCount); - } - - @Override - public void setExistNextPage(final boolean existNextPage) { data.register("existNextPage", existNextPage); - super.setExistNextPage(existNextPage); - } - - @Override - public void setExistPrevPage(final boolean existPrevPage) { data.register("existPrevPage", existPrevPage); - super.setExistPrevPage(existPrevPage); - } - - @Override - public void setCurrentStartRecordNumber(final long currentStartRecordNumber) { data.register("currentStartRecordNumber", currentStartRecordNumber); - super.setCurrentStartRecordNumber(currentStartRecordNumber); - } - - @Override - public void setCurrentEndRecordNumber(final long currentEndRecordNumber) { data.register("currentEndRecordNumber", currentEndRecordNumber); - super.setCurrentEndRecordNumber(currentEndRecordNumber); - } - - @Override - public void setPageNumberList(final List pageNumberList) { data.register("pageNumberList", pageNumberList); - super.setPageNumberList(pageNumberList); - } - - @Override - public void setPartialResults(final boolean partialResults) { data.register("partialResults", partialResults); - super.setPartialResults(partialResults); - } - - @Override - public void setQueryTime(final long queryTime) { data.register("queryTime", queryTime); - super.setQueryTime(queryTime); - } - - @Override - public void setSearchQuery(final String searchQuery) { data.register("searchQuery", searchQuery); - super.setSearchQuery(searchQuery); - } - - @Override - public void setRequestedTime(final long requestedTime) { data.register("requestedTime", requestedTime); - super.setRequestedTime(requestedTime); } } } \ No newline at end of file diff --git a/src/main/java/org/codelibs/fess/entity/SearchRenderData.java b/src/main/java/org/codelibs/fess/entity/SearchRenderData.java index 071023ddf..e3b3704c6 100644 --- a/src/main/java/org/codelibs/fess/entity/SearchRenderData.java +++ b/src/main/java/org/codelibs/fess/entity/SearchRenderData.java @@ -22,41 +22,41 @@ import org.codelibs.fess.util.FacetResponse; public class SearchRenderData { - private List> documentItems; + protected List> documentItems; - private FacetResponse facetResponse; + protected FacetResponse facetResponse; - private String appendHighlightParams; + protected String appendHighlightParams; - private String execTime; + protected String execTime; - private int pageSize; + protected int pageSize; - private int currentPageNumber; + protected int currentPageNumber; - private long allRecordCount; + protected long allRecordCount; - private int allPageCount; + protected int allPageCount; - private boolean existNextPage; + protected boolean existNextPage; - private boolean existPrevPage; + protected boolean existPrevPage; - private long currentStartRecordNumber; + protected long currentStartRecordNumber; - private long currentEndRecordNumber; + protected long currentEndRecordNumber; - private List pageNumberList; + protected List pageNumberList; - private boolean partialResults; + protected boolean partialResults; - private String searchQuery; + protected String searchQuery; - private long queryTime; + protected long queryTime; - private long requestedTime; + protected long requestedTime; - private String queryId; + protected String queryId; public void setDocumentItems(final List> documentItems) { this.documentItems = documentItems;