⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basesearchlistaction.java

📁 j2ee源码
💻 JAVA
字号:
/*
 * Created on 2005/11/17
 */
package com.leeman.wkexs.web.base;

import java.util.HashMap;
import java.util.Map;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.leeman.common.web.ui.CachedPager;
import com.leeman.common.web.ui.ScreenMessageHelper;
import com.leeman.common.web.ui.ScreenMessage;

/**
 * @author Dennis
 */
public abstract class BaseSearchListAction extends BaseAction{
	
	public Map getCmdMethodMap()
	{
		HashMap map = new HashMap();
		map.put("newSearch", "newSearch");
		map.put("search", "search");
		map.put("nextPage", "nextPage");
		map.put("prevPage", "prevPage");
	
		return map;
	}
	
	public ActionForward newSearch(
		ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request, 
		HttpServletResponse response) throws Exception{
		setSearchHiddenField(request, BaseConstants.REQ_SEARCH_LIST_MODE_NEW_SEARCH);
		BaseCollectionCache collectionCache = (BaseCollectionCache)getCollectionCache(request);
		collectionCache.setSearchListId(request.getParameter("searchListId"));
		collectionCache.setSearchListPager (new CachedPager());		
		doNewSearch(mapping, form, request, response);
		initSearchListForm(mapping, form, request, response);
		return mapping.getInputForward();
	}
	
	protected void setSearchHiddenField(HttpServletRequest request)
	{
		ArrayList returnFieldNamelist = new ArrayList();
		ArrayList sourceFieldNamelist = new ArrayList();
		ArrayList preloadFieldNamelist = new ArrayList();
		int returnSize = Integer.parseInt(request.getParameter("returnSize"));
		for (int i=0; i < returnSize; i++){
			returnFieldNamelist.add(request.getParameter("returnFieldName" + String.valueOf(i)));
		}
		int sourceSize = Integer.parseInt(request.getParameter("sourceSize"));
		
		for (int i=0; i < sourceSize; i++){
			sourceFieldNamelist.add(request.getParameter("sourceFieldName" + String.valueOf(i)));
		}		
		int preloadSize = Integer.parseInt(request.getParameter("preloadSize"));
		for (int i=0; i < preloadSize; i++){
			preloadFieldNamelist.add(request.getParameter("preloadFieldName" + String.valueOf(i)));
		}
		request.setAttribute(BaseConstants.REQ_SEARCH_LIST_RETURNFORM, request.getParameter("returnFormName"));
		request.setAttribute(BaseConstants.REQ_SEARCH_LIST_RETURNFIELD, returnFieldNamelist);
		request.setAttribute(BaseConstants.REQ_SEARCH_LIST_SOURCEFIELD, sourceFieldNamelist);
		request.setAttribute(BaseConstants.REQ_SEARCH_LIST_PRELOADFIELD, preloadFieldNamelist);
		request.setAttribute(BaseConstants.REQ_SEARCH_LIST_MODE, BaseConstants.REQ_SEARCH_LIST_MODE_SEARCH);		
	}
	
	protected void setSearchHiddenField(HttpServletRequest request, String searchMode)
	{
		ArrayList returnFieldNamelist = new ArrayList();
		ArrayList sourceFieldNamelist = new ArrayList();
		ArrayList preloadFieldNamelist = new ArrayList();
		int returnSize = Integer.parseInt(request.getParameter("returnSize"));
		for (int i=0; i < returnSize; i++){
			returnFieldNamelist.add(request.getParameter("returnFieldName" + String.valueOf(i)));	
		}		
		int sourceSize = Integer.parseInt(request.getParameter("sourceSize"));
		for (int i=0; i < sourceSize; i++){
			sourceFieldNamelist.add(request.getParameter("sourceFieldName" + String.valueOf(i)));
		}		
		int preloadSize = Integer.parseInt(request.getParameter("preloadSize"));
		for (int i=0; i < preloadSize; i++){
			preloadFieldNamelist.add(request.getParameter("preloadFieldName" + String.valueOf(i)));
		}		
		request.setAttribute(BaseConstants.REQ_SEARCH_LIST_RETURNFORM, request.getParameter("returnFormName"));
		request.setAttribute(BaseConstants.REQ_SEARCH_LIST_RETURNFIELD, returnFieldNamelist);
		request.setAttribute(BaseConstants.REQ_SEARCH_LIST_SOURCEFIELD, sourceFieldNamelist);
		request.setAttribute(BaseConstants.REQ_SEARCH_LIST_PRELOADFIELD, preloadFieldNamelist);
		request.setAttribute(BaseConstants.REQ_SEARCH_LIST_MODE, searchMode);
	}
		
	public ActionForward search(
		ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request, 
		HttpServletResponse response) throws Exception{
							
		setSearchHiddenField(request);	
		BaseCollectionCache collectionCache = (BaseCollectionCache)this.getCollectionCache(request);
		collectionCache.setSearchListResults(new ArrayList());
		CachedPager pager = new CachedPager();
		collectionCache.setSearchListPager(pager);
		doSearch(mapping, form, request, response);
		if (collectionCache.getSearchListResults().size() == 0){
			ScreenMessageHelper.addMessage(request, ScreenMessage.WARNING, this.getResourceMessage(request, "message.noRecordFound"), false, true);
		}
		else{
			BaseSearchForm baseSearchForm = (BaseSearchForm)form; 
			baseSearchForm.setSearchResults(collectionCache.getPagedSearchListResult(pager.getCacheOffset(), pager.getPageRecordSize()));
			request.setAttribute("searchPager", pager);
		}
		initSearchListForm(mapping, form, request, response);
		
		if (getRstLinkId() != null){
			this.setInitFocusByElementId(request, getRstLinkId());
		}
		
		return mapping.getInputForward();
	}
	
	public ActionForward prevPage(
		ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request, 
		HttpServletResponse response) throws Exception{
		setSearchHiddenField(request);
		BaseCollectionCache collectionCache = (BaseCollectionCache)this.getCollectionCache(request);
		BaseSearchForm searchForm = (BaseSearchForm) form;
		
		CachedPager pager = collectionCache.getSearchListPager();
		if (pager.isPrevPageCached())
		{
			pager.setPageRecordStart(pager.getPrevPageStart());
			searchForm.setSearchResults(collectionCache.getPagedSearchListResult(pager.getCacheOffset(), pager.getPageRecordSize()));
		}
		else
		{
			pager.setPageRecordStart(pager.getPrevPageStart());
			doSearch(mapping, form, request, response);
			((BaseSearchForm)form).setSearchResults(collectionCache.getPagedSearchListResult(pager.getCacheOffset(), pager.getPageRecordSize()));
			
		}
		request.setAttribute("searchPager", pager);
		initSearchListForm(mapping, form, request, response);
		
		if (getRstLinkId() != null){
			this.setInitFocusByElementId(request, getRstLinkId());
		}
				
		return mapping.getInputForward();
	}
	
	public ActionForward nextPage(
		ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request, 
		HttpServletResponse response) throws Exception{
		setSearchHiddenField(request);
		BaseCollectionCache collectionCache = (BaseCollectionCache)this.getCollectionCache(request);
		BaseSearchForm searchForm = (BaseSearchForm) form;
		CachedPager pager = collectionCache.getSearchListPager();
		if (pager.isNextPageCached())
		{
			pager.setPageRecordStart(pager.getNextPageStart());
			searchForm.setSearchResults(collectionCache.getPagedSearchListResult(pager.getCacheOffset(), pager.getPageRecordSize()));
		}
		else
		{
			pager.setPageRecordStart(pager.getNextPageStart());
			doSearch(mapping, form, request, response);
			if (collectionCache.getPagedSearchListResult(pager.getCacheOffset(),pager.getPageRecordSize()).size() == 0){
				pager.setPageRecordStart(pager.getPrevPageStart());
				doSearch(mapping, form, request, response);					
				ScreenMessageHelper.addMessage(request, ScreenMessage.WARNING, this.getResourceMessage(request, "message.noMoreSearchResult"), false, true);
			}
		
			((BaseSearchForm)form).setSearchResults(collectionCache.getPagedSearchListResult(pager.getCacheOffset(), pager.getPageRecordSize()));	
		}
		request.setAttribute("searchPager", pager);
		initSearchListForm(mapping, form, request, response);
		
		if (getRstLinkId() != null){
			this.setInitFocusByElementId(request, getRstLinkId());
		}
				
		return mapping.getInputForward();
	}
	
	public void initSearchListForm(ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request,
		HttpServletResponse response) throws Exception
	{};
	
	//abstract 
	public abstract void doNewSearch(ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request,
		HttpServletResponse response)
		throws Exception;
		
	public abstract void doSearch(ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request,
		HttpServletResponse response)
		throws Exception;
	/**
	 * @return
	 */
	public String getRstLinkId() {
		return "rstlink_0";
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -