java封裝前端查詢條件通用版
本文實(shí)例為大家分享了java封裝前端查詢條件的具體代碼,供大家參考,具體內(nèi)容如下
import hengyi.oa.mobile.exception.ServiceException;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
/**
* 查詢條件封裝類(lèi)
* @author Xue.YQ
* @created 2018年11月11日
*/
public class TableTagBean
{
public static final int DEFAULT_PAGE_SIZE = 20;
private static final String DELIMITER = "\n";
private int m_page;
private int m_pageSize = DEFAULT_PAGE_SIZE;
private int m_total;
private String m_orderBy;
private boolean m_asc;
private StringMap m_condition = new StringMap();
private List m_list;
private boolean m_builded = false;
private String m_conditionParam = null;
private int m_pageCount;
private boolean m_canPrev;
private boolean m_canNext;
public TableTagBean() {}
public boolean getAsc() {
return m_asc;
}
public void setAsc(boolean asc) {
ensureNotBuilded();
m_asc = asc;
}
public StringMap getCondition() {
return m_condition;
}
public void setCondition(StringMap condition) {
ensureNotBuilded();
m_condition = condition;
}
public String getOrderBy() {
return m_orderBy;
}
public void setOrderBy(String orderBy) {
ensureNotBuilded();
m_orderBy = orderBy;
}
public int getPage() {
return m_page;
}
public void setPage(int page) {
ensureNotBuilded();
m_page = page;
}
public int getPageSize() {
return m_pageSize;
}
public void setPageSize(int pageSize) {
ensureNotBuilded();
m_pageSize = pageSize;
}
public int getTotal() {
return m_total;
}
public void setTotal(int total) {
ensureNotBuilded();
m_total = total;
}
public List getList() {
return m_list;
}
public void setList(List list) {
ensureNotBuilded();
m_list = list;
}
public void ensureNotBuilded() {
if (m_builded) {
throw new IllegalStateException(
"Can't set attribute to TableTagBean after build() is called.");
}
}
public boolean getCanNext() {
return m_canNext;
}
public boolean getCanPrev() {
return m_canPrev;
}
public String getConditionParam() {
return m_conditionParam;
}
public int getPageCount() {
return m_pageCount;
}
public void build() throws UnsupportedEncodingException {
if (m_condition.size() > 0) {
m_conditionParam = CryptoUtil.base64url_encode(m_condition
.toString(DELIMITER).getBytes("GBK"));
}
if (m_total % m_pageSize != 0) {
m_pageCount = m_total / m_pageSize + 1;
} else {
m_pageCount = m_total / m_pageSize;
}
m_canPrev = m_page > 0;
m_canNext = m_page < m_pageCount - 1;
m_builded = true;
}
public static TableTagBean getFromRequest(HttpServletRequest req)
throws UnsupportedEncodingException {
TableTagBean r = new TableTagBean();
String p = req.getParameter("p");
if (StringUtils.isNotEmpty(p) ) {
r.setPage(Integer.parseInt(p));
}
String o = req.getParameter("o");
if (StringUtils.isNotEmpty(o)) {
r.setOrderBy(o);
}
String a = req.getParameter("a");
if (StringUtils.isNotEmpty(a)) {
r.setAsc(a.equals("1"));
}
String c = req.getParameter("c");
if (StringUtils.isNotEmpty(c)) {
r.setCondition(decodeConditionParam(c));
}
return r;
}
private static StringMap decodeConditionParam(String c)
throws UnsupportedEncodingException {
String s = new String(CryptoUtil.base64url_decode(c), "GBK");
return new StringMap(s, DELIMITER);
}
public String getQueryParameter() {
StringBuffer sb=new StringBuffer();
sb.append("p="+m_page);
if(m_orderBy!=null) {
sb.append("&o="+m_orderBy+"&a="+(m_asc?"1":"0"));
}
if(m_conditionParam!=null) {
sb.append("&c="+m_conditionParam);
}
return sb.toString();
}
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("[TableTagBean]\r\n");
sb.append("m_page: " + m_page + "\r\n");
sb.append("m_pageSize :" + m_pageSize + "\r\n");
sb.append("m_total :" + m_total + "\r\n");
sb.append("m_orderBy :" + m_orderBy + "\r\n");
sb.append("m_asc :" + m_asc + "\r\n");
sb.append("m_condition :" + m_condition + "\r\n");
sb.append("m_list(size) :" + m_list.size() + "\r\n");
sb.append("m_builded :" + m_builded + "\r\n");
sb.append("m_conditionParam :" + m_conditionParam + "\r\n");
sb.append("m_pageCount :" + m_pageCount + "\r\n");
sb.append("m_canPrev :" + m_canPrev + "\r\n");
sb.append("m_canNext :" + m_canNext + "\r\n");
return sb.toString();
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public static TableTagBean getFromParameter(HttpServletRequest request)
throws ServiceException
{
String start = request.getParameter("start");
String limit = request.getParameter("limit");
String asc = request.getParameter("dir");
String orderBy = request.getParameter("sort");
int page = (start != null) ? Integer.parseInt(start) : 0;
int pageSize = (limit != null) ? Integer.parseInt(limit) : 30;
boolean isAsc = "ASC".equals(asc);
TableTagBean ttb = new TableTagBean();
ttb.setPage(page);
ttb.setPageSize(pageSize);
ttb.setOrderBy(orderBy);
ttb.setAsc(isAsc);
Map<String, String[]> m = request.getParameterMap();
String isEncodeURI = request.getParameter("isEncodeURI");
if (m != null) {
for (Entry entry : m.entrySet()) {
String key = (String)entry.getKey();
Object[] value = (Object[])entry.getValue();
// if("Y".equals(isEncodeURI)){
// String v= java.net.URLDecoder.decode(value[0].toString(), "UTF-8");
// ttb.getCondition().put(key, (value[0] == null) ? null :v);
// }else{
ttb.getCondition().put(key, (value[0] == null) ? null : value[0].toString());
// }
}
}
return ttb;
}
}
調(diào)用之處:
@RequestMapping("/listAgentAwaitRepor")
public List<DepartmentOfficeDTO> listAgentAwaitRepor(HttpServletRequest request) throws ServiceException
{
TableTagBean ttb = TableTagBean.getFromParameter(request);
return oldAgentAwaitReportSearchFacade.list(ttb);
}
取值之處:
String titleName = ttb.getCondition().get("titleName");
if(!GenericValidator.isBlankOrNull(titleName))
{
sql.append(" and biz.biz_title like :bizTitle ");
sqlParams.put("bizTitle", "%"+titleName.trim()+"%");
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring的Eureka續(xù)約(心跳檢測(cè))詳解
這篇文章主要介紹了Spring的Eureka續(xù)約(心跳檢測(cè))詳解,eureka?client每隔一定的時(shí)間,會(huì)給eureka?server發(fā)送心跳,保持心跳,讓eureka?server知道自己還活著,需要的朋友可以參考下2023-11-11
springboot創(chuàng)建監(jiān)聽(tīng)和處理事件的操作方法
這篇文章主要介紹了springboot創(chuàng)建監(jiān)聽(tīng)和處理事件的操作方法,使用Spring Boot的事件機(jī)制來(lái)監(jiān)聽(tīng)和處理事件有多種優(yōu)勢(shì),本文給大家介紹的非常詳細(xì),需要的朋友參考下吧2024-07-07
Spring實(shí)戰(zhàn)之XML與JavaConfig的混合配置詳解
大家都知道Spring的顯示配置方式有兩種,一種是基于XML配置,一種是基于JavaConfig的方式配置。那么下這篇文章主要給大家分別介紹如何在JavaConfig中引用XML配置的bean以及如何在XML配置中引用JavaConfig,需要的朋友可以參考下。2017-07-07
springboot集成普羅米修斯(Prometheus)的方法
這篇文章主要介紹了springboot集成普羅米修斯(Prometheus)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Eclipse/MyEclipse轉(zhuǎn)IntelliJ IDEA完全攻略(圖文)
這篇文章主要介紹了Eclipse/MyEclipse轉(zhuǎn)IntelliJ IDEA完全攻略(圖文),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
使用SpringBoot進(jìn)行身份驗(yàn)證和授權(quán)的示例詳解
在廣闊的 Web 開(kāi)發(fā)世界中,身份驗(yàn)證是每個(gè)數(shù)字領(lǐng)域的守護(hù)者,在本教程中,我們將了解如何以本機(jī)方式保護(hù)、驗(yàn)證和授權(quán) Spring-Boot 應(yīng)用程序的用戶,并遵循框架的良好實(shí)踐,希望對(duì)大家有所幫助2023-11-11

