📄 parameterregistry.java
字号:
/* * Copyright 2004 original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.extremecomponents.table.core;import java.net.URLEncoder;import java.util.Enumeration;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;import javax.servlet.http.HttpServletRequest;import javax.servlet.jsp.PageContext;import org.apache.commons.lang.StringUtils;import org.extremecomponents.table.bean.Table;/** * * @author jeff johnston */public final class ParameterRegistry { private BaseModel model; private Map parameters = new HashMap(); public ParameterRegistry(BaseModel model) { this.model = model; } public void init(PageContext pageContext) { if (shouldUseSessionFilterSort() && saveFilterSort()) { this.parameters = getParameters(); } else { Enumeration enumeration = pageContext.getRequest().getParameterNames(); while (enumeration.hasMoreElements()) { String name = (String) enumeration.nextElement(); String value = pageContext.getRequest().getParameter(name); if (StringUtils.isNotBlank(value)) { value = value.trim(); } if (name.startsWith(model.getTableHandler().prefixWithTableId() + TableConstants.PAGE) || name.startsWith(model.getTableHandler().prefixWithTableId() + TableConstants.CURRENT_ROWS_DISPLAYED) || name.startsWith(model.getTableHandler().prefixWithTableId() + TableConstants.SORT) || name.startsWith(model.getTableHandler().prefixWithTableId() + TableConstants.FILTER) || name.startsWith(model.getTableHandler().prefixWithTableId() + TableConstants.EXPORT) || name.startsWith(model.getTableHandler().prefixWithTableId() + TableConstants.OPEN)) { parameters.put(name, value); } else { if (model.getTableHandler().getTable().autoIncludeParameters()) { if (!name.equals(Table.EXTREME_TABLE)) { parameters.put(name, value); } } } } } if (saveFilterSort()) { saveParametersInSession(); } } /** * Add additional parameters that need to be passed around */ public void addParameter(String name, String value) { if (StringUtils.isNotBlank(value)) { value = value.trim(); } parameters.put(name, value); } /** * Get the parameter prepended by the table key */ public String getParameter(String parameter) { return (String) parameters.get(model.getTableHandler().prefixWithTableId() + parameter); } public Map getParameters() { if (saveFilterSort()) { HttpServletRequest request = (HttpServletRequest) model.getPageContext().getRequest(); Map params = (Map) request.getSession().getAttribute(model.getTableHandler().prefixWithTableId()); if (params != null) { return params; } } return this.parameters; } /** * Get a map of specific parameters */ public Map getParameters(String parameter) { Map subset = new HashMap(); String find = model.getTableHandler().prefixWithTableId() + parameter; Set set = parameters.keySet(); for (Iterator iter = set.iterator(); iter.hasNext();) { String key = (String) iter.next(); if (key.startsWith(find)) { String value = (String) parameters.get(key); subset.put(key, value); } } return subset; } /** * Get a map of specific parameters */ public Map clearParameters(String parameter) { if (saveFilterSort()) { removeParametersInSession(); } Map subset = new HashMap(); Set set = parameters.keySet(); for (Iterator iter = set.iterator(); iter.hasNext();) { String name = (String) iter.next(); if (name.startsWith(model.getTableHandler().prefixWithTableId() + parameter)) { iter.remove(); } } return subset; } /** * Take the parameters and format into hidden fields */ public String getHiddenFields(String parameter) { StringBuffer sb = new StringBuffer(); Set keys = parameters.keySet(); for (Iterator iter = keys.iterator(); iter.hasNext();) { String name = (String) iter.next(); if (((parameter == null) && !name.startsWith(model.getTableHandler().prefixWithTableId())) || (name.startsWith(model.getTableHandler().prefixWithTableId() + parameter))) { String value = (String) parameters.get(name); sb.append("\n\t<input type=\"hidden\" name=\"").append(name).append("\" value=\"").append(value) .append("\">\n"); } } return sb.toString(); } /** * Get a URI formated parameter string. Will look like &key=value */ public String getParameterString(String parameter) { StringBuffer sb = new StringBuffer(); Set keys = parameters.keySet(); for (Iterator iter = keys.iterator(); iter.hasNext();) { String name = (String) iter.next(); if (((parameter == null) && !name.startsWith(model.getTableHandler().prefixWithTableId())) || (name.startsWith(model.getTableHandler().prefixWithTableId() + parameter))) { String value = (String) parameters.get(name); value = URLEncoder.encode(value); sb.append("&" + name + "=" + value); } } return sb.toString(); } /** * Get parameter datum. */ public String getURLParameterString(boolean filter, boolean sort, boolean page, boolean rowsDisplayed) { StringBuffer sb = new StringBuffer(); if (filter) { sb.append(getParameterString(TableConstants.FILTER)); } if (sort) { sb.append(getParameterString(TableConstants.SORT)); } if (page) { sb.append(getParameterString(TableConstants.PAGE)); } if (rowsDisplayed) { sb.append(getParameterString(TableConstants.CURRENT_ROWS_DISPLAYED)); } sb.append(getParameterString(null)); return sb.toString(); } /** * Get all the action as hidden fields. */ public String getFormHiddenFields(boolean filter, boolean sort, boolean page, boolean rowsDisplayed) { StringBuffer sb = new StringBuffer(); if (filter) { sb.append(getHiddenFields(TableConstants.FILTER)); } if (sort) { sb.append(getHiddenFields(TableConstants.SORT)); } if (page) { sb.append(getHiddenFields(TableConstants.PAGE)); } if (rowsDisplayed) { sb.append(getHiddenFields(TableConstants.CURRENT_ROWS_DISPLAYED)); } sb.append(getHiddenFields(null)); return sb.toString(); } public void destroy() { if (!saveFilterSort()) { parameters.clear(); parameters = null; } } private boolean saveFilterSort() { if (StringUtils.isNotEmpty(model.getTableHandler().getTable().getSaveFilterSort()) && model.getTableHandler().getTable().getSaveFilterSort().equalsIgnoreCase("true")) { return true; } return false; } private void saveParametersInSession() { HttpServletRequest req = (HttpServletRequest) model.getPageContext().getRequest(); req.getSession().setAttribute(model.getTableHandler().prefixWithTableId(), parameters); } private void removeParametersInSession() { HttpServletRequest req = (HttpServletRequest) model.getPageContext().getRequest(); req.getSession().setAttribute(model.getTableHandler().prefixWithTableId(), new HashMap()); } private boolean shouldUseSessionFilterSort() { boolean result = false; // user defined param set up in properties file String useSessionFilterSortFlagName = model.getProperties() .getProperty(TableProperties.USE_SESSION_FILTER_SORT); if (StringUtils.isNotBlank(useSessionFilterSortFlagName)) { String useSessionFilterSort = model.getPageContext().getRequest() .getParameter(useSessionFilterSortFlagName); if (StringUtils.isNotEmpty(useSessionFilterSort) && useSessionFilterSort.equalsIgnoreCase("true")) { result = true; } } return result; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -