`

WebUtils.getParametersStartingWith(

 
阅读更多
2009-07-20 20:55

spring 包中 WebUtils.getParametersStartingWith(request, "search_"); 使用

在页面中包含很多个筛选条件!

主要包括文本框和下拉菜单等两种形式。

文本框:

1. 公司名称search_name

2. 主营业务search_mainfunction

3. 区域search_region

4. 资料来源search_source

下拉菜单:

1. 企业性质search_tradetypeid

2. 行业search_businessid

3. 拒绝理由search_rejectid

三个下拉菜单,其控件默认值为-1

tradetypeid 整型
businessid 整型
region   字符串

查询时先判断一下,如果为-1就跳过,有值存在的话,就添加为筛选条件。

在JSP页面中,负责搜索的部分代码是:

<form action="${ctx}/data/vcompany.do?method=mysearch&apply=1" method="post" name="queryform">

//apply=1是其他作用,没有影响,当成有效即可。
       <table>
       <tr>
       <td>
       公司名称:
       <input class="text" type="text" name="search_name" size="10">
       </td>
       <td>
       企业性质:
       <select name="search_tradetypeid">
       <option value="-1">
          所有
         </option>
        <c:forEach var="trade" items="${tradetypes}">
         <option value="${trade.id}">
          ${trade.name}
         </option>
        </c:forEach>
       </select>
       </td>
       <td>
        区域:
        <input class="text" type="text" name="search_region" size="10">
       </td>
      
       </tr>
       <tr>
       <td>
       主营业务:
       <input class="text" type="text" name="search_mainfunction" size="10">
       </td>
       <td>
       资料来源:
       <input class="text" type="text" name="search_source" size="10">
       </td>
       <td>
       行业:
       <select name="search_businessid">
          <option value="-1">
          所有
         </option>
        <c:forEach var="business" items="${businesses}">
         <option value="${business.id}">
          ${business.name}
         </option>
        </c:forEach>
       </select>
       </td>
       </tr>
       <tr>
       <td colspan="2">
       拒绝理由:
       <select name="search_rejectid">
       <option value="-1">
          所有
         </option>
        <c:forEach var="reject" items="${rejects}">
         <option value="${reject.id}">
          ${reject.name}
         </option>
        </c:forEach>
       </select>
       </td>
       <td>
       <input type="image" src="${ctx}/images/icon/16x16/search.gif"
        class="nullBorder" >
            <input type="button" value="搜索" onclick="document.forms.queryform.submit();">
         </td>
         </tr>
        </table>
      </form>

==================================================

红色标注非常值得关注!!!

七个表单控件的命名全部以search_前缀开头。

提交后对应VcompanyAction的mySearch()方法:
/**
* 查找公司信息
*/
public ActionForward mysearch(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
  Map map = WebUtils.getParametersStartingWith(request, "search_");

这句话很强大,做了很多事情。似乎是从request里取出了所有以search_打头的参数!!!

map是key-value的值对,应该就是包括本页面的七个控件。

所有的筛选内容全部在map里!
   String apply = request.getParameter("apply");
   System.out.println("apply的值是"+apply);
   System.out.println("method的值是"+request.getParameter("method"));
   //System.out.println("In VcompanyAction function search begin...");
   request.setAttribute("vcompanys", vcompanyManager.searchVcompany(map,businessManager,tradeTypeManager,rejectManager,Integer.valueOf(apply)));

调用vcompanyManager的searchVcompany()方法,负责具体的查询工作,但是:

参数很值得研究,本次搜索总共七个选项。这里的

businessManager、tadeTypeManager、rejectManager代表什么意思呢?

要到具体的VcompanyManager里面去看……转下文
   //System.out.println("In VcompanyAction function search end ...");
   refrenceData(request);
   User user = (User)request.getSession().getAttribute(Constants.USER_IN_SESSION);
   if(Integer.valueOf(apply) == 1)
   {

//不同的request,需要把筛选电话专员的操作再做一次。。。
    request.setAttribute("tel_persons", userManager.getPerson(user.getId(),user.getUnitInfo().getId()));
    return mapping.findForward("manager_List");
   }

//不相关的
   else{
    if(userManager.dataOrIf(user,new Integer(4))){
     request.setAttribute("show", "yes");
    }
    return mapping.findForward(LIST);
   }
}

VcompanyManager的searchVcompany()方法如下:

/**
* 查询公司信息
*/
@SuppressWarnings("unchecked")
public List<Vcompany> searchVcompany(Map filter,BusinessManager businessManager,TradeTypeManager tradeTypeManager,RejectManager rejectManager,Integer apply) {
   Criteria criteria = createCriteria();
   Integer valuetradetype = Integer.valueOf(filter.get("tradetypeid").toString());
   Integer valuebusiness = Integer.valueOf(filter.get("businessid").toString());
   String valueregion = filter.get("region").toString();

这里定义三个参数,分别为整形、字符串?因为交易类型和企业性质就是对应的ID值,区域为字符。

这里的tradetypeid、businessid、region是在页面中的具体控件属性:

区域:
        <input class="text" type="text" name="search_region" size="10">

企业性质:
       <select name="search_tradetypeid">

行业:
       <select name="search_businessid">

将名字的前缀取出之后的具体值!!!为什么只有这三个呢?并且企业性质、行业为下拉菜单,区域为文本框!!!程序混乱而已

实际上,后续都是通过filter将所有的控件值去了出来!参见红色标注
   if (valuetradetype.intValue()!=-1)
   {
//    System.out.println("in if valuetradetype"+valuetradetype);
    criteria.add(Restrictions.eq("tradetype",tradeTypeManager.getTradeType(valuetradetype)));
   }
   if (valuebusiness.intValue()!=-1)
   {
//    System.out.println("in if valuebusiness"+valuebusiness);
    criteria.add(Restrictions.eq("business",businessManager.getBusiness(valuebusiness)));
   }
   if (!(valueregion.equals("")||valueregion==null))
   {
    criteria.add(Restrictions.like("region","%"+valueregion+"%"));
   }
   criteria.add(Restrictions.like("comName","%"+filter.get("name").toString()+"%"));
   if(!filter.get("mainfunction").toString().equals(""))
   {
    criteria.add(Restrictions.like("mainfunction","%"+filter.get("mainfunction").toString()+"%"));
   }
   if(!filter.get("source").toString().equals(""))
   {
   criteria.add(Restrictions.like("source","%"+filter.get("source")+"%"));
   }
   if(apply == 1)
   {
    criteria.add(Restrictions.or(
      Restrictions.eq("state",new Integer(0)),
      Restrictions.eq("state",new Integer(2))
      ));
    Integer valuereject = Integer.valueOf(filter.get("rejectid").toString());
    if(valuereject.intValue()!=-1)
    {
     criteria.add(Restrictions.eq("reject",rejectManager.getReject(valuereject)));
     criteria.addOrder(Order.asc("aplusTime"));
    }
   }
   List<Vcompany> vcompanys= criteria.list();
   return vcompanys;
}

总的来说,就是在以Map的形式记录所有提交的表单控件的值!

然后再利用criteria来筛选,明天继续。

分享到:
评论

相关推荐

    WebUtils.doPost

    String getString=WebUtils.doPost(path, map2,"GBK") ; if("1".equals(getString.trim())){ MainForm.log("成功导入|i="+i+":userName="+employee_no); }else{ MainForm...

    WebUtils.java

    Web请求工具包

    JAVA反编译工具

    Java反编译工具是开发人员在处理Java字节码时常用的一种工具,它能够将已编译的.class文件转换回可读的Java源代码。这对于理解已加密或混淆的代码、学习第三方库的工作原理或者进行逆向工程时非常有用。...

    SolidCubes.WebUtils.WebBrowser:基于CefSharp的小型Web浏览器,用于将用户浏览限制在有限的域中

    SolidCubes WebUtils Web浏览器这是我需要的一个小型浏览器,以替换具有10年历史的VB6 WebBrowser控件,因为该控件不再与Internet Explorer旧版本和他们需要浏览的网站一起使用! 它是最小的,并且有足够的空间添加...

    webutils:Web开发常用Javascript方法集

    webutils.url.get(name,url); 参数: name:url参数名。 url:(可选),默认是当前url。 ###设置url参数 方法: webutils.url.set(name,value,url); 参数: name:url参数名。如果name不存在则新增,反之则更新。 ...

    http简易工具类

    `WebUtils.java`作为压缩包中的唯一文件,很可能是整个工具类的核心。以下是一些可能包含在`WebUtils`类中的关键功能: 1. 发送GET请求:这个函数可能会接收URL作为参数,然后使用HttpURLConnection或HttpClient...

    java 中 request.getSession(true、false、null)的区别

    Spring提供了`WebUtils.getSessionAttribute(HttpServletRequest request, String name)`方法,可以从会话中安全地获取属性。这个方法首先尝试获取会话,如果会话不存在,则不会创建新的会话,这与`getSession(false...

    javawebutils:Web应用程序实用程序-开源

    该库包含实用程序类,例如,从纯文本到HTML的转换器(用于将用户提供的文本安全地包含到网页中,避免XSS攻击等),从二进制到十六进制表示的转换器,以及类似的功能

    基于springboot实现表单重复提交.docx

    loginName:{},url:{}", WebUtils.getBaseLoginUser(request).getLogin_name(), request.getRequestURL().toString()); throw new SystemException(ExceptionTypeEnum.REPEAT_SUBMIT.getCode()); } return obj; }...

    jsp 对request.getSession(false)的理解(附程序员常疏忽的一个漏洞)

    如果会话中没有`user_name`属性,`WebUtils.getSessionAttribute()`会返回`null`,而不会创建新的会话。此外,Spring还提供了`@SessionAttributes`注解和`SessionStatus`接口,用于在控制器方法中管理和清理会话属性...

    spring-web-2.5.jar

    META-INF/MANIFEST.MF ...org.springframework.web.util.WebUtils.class org/springframework/web/context/ContextLoader.properties org/springframework/web/util/HtmlCharacterEntityReferences.properties

    dotnet-AspNetCore项目中非常轻量的异步任务管理模块

    在压缩包文件名称"KingLion.WebUtils.Jobs-master"中,“KingLion”可能是一个开发者或者团队的标识,"WebUtils"暗示这是一系列与Web开发相关的实用工具,而"Jobs"则直接对应了我们讨论的任务管理部分。"master"分支...

    WebUtils-开源

    WebUtils是一个开源项目,旨在为用户带来便捷的网络浏览体验,尤其强调了设备无关的书签管理功能。这个工具由PHP编程语言实现,利用MySQL作为数据存储后台,展现了PHP和MySQL在构建Web应用中的强大能力。 一、PHP...

    SpaceBuilder_V2.3_SP1

    修改编辑时删除推荐类型出现的乱码问题(对itemName参数添加了WebUtils.UrlEncode()方法) SpaceBuilder/Web/Themes/Channels/Default/Controls/RecommendItem.ascx 20.修改分享浏览数一直不变 SpaceBuilder/Web...

    报表开发工具中开放的部分图表js接口列表

    首先,要获取图表对象,可以通过FR.Chart.WebUtils.getChart接口实现。该接口能够根据不同的id获取到不同的图表对象,包括单元格、悬浮元素以及表单中的图表。例如,通过"Cells__id"可以获取到单元格中的图表,...

    SpringMVC-10 国际化

    request.getSession().setAttribute(WebUtils.FacesContextLocaleRequestAttributeName, locale); return "index"; } ``` 三、动态切换语言 为了提供用户友好的界面,通常会有一个下拉菜单或者按钮让用户选择...

    Web2.0社区平台源码

    19.修改编辑时删除推荐类型出现的乱码问题(对itemName参数添加了WebUtils.UrlEncode()方法) SpaceBuilder/Web/Themes/Channels/Default/Controls/RecommendItem.ascx 20.修改分享浏览数一直不变 SpaceBuilder/Web...

    spring boot国际化 i18n

    session.setAttribute(WebUtils.SessionLocaleResolver.LOCALE_KEY, locale); return "redirect:" + request.getHeader("Referer"); } } ``` 当用户选择新的语言后,此方法会更新Session中的语言设置,并重...

Global site tag (gtag.js) - Google Analytics