在页面中包含很多个筛选条件!
主要包括文本框和下拉菜单等两种形式。
文本框:
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的形式记录所有提交的表单控件的值!
分享到:
相关推荐
1. 基于RESTful的服务:使用Spring MVC和Spring Data构建RESTful API,为移动或Web客户端提供数据服务。 2. 微服务架构:Spring Boot和Spring Cloud可以帮助快速构建和部署微服务,实现服务间的解耦和独立部署。 3...
在本示例中,我们将深入探讨如何利用Spring MVC框架构建RESTful API,主要涉及`employeeDS.java`这个可能的数据服务类以及与`rest_spring_mvc`、`spring_mvc`和`spring_rest`相关的概念。`spring-rest.rar`是一个...
首先,Spring对定时任务的支持主要通过`org.springframework.scheduling`包中的接口和类实现。其中,`TaskScheduler`和`TaskExecutor`是两个核心接口,分别用于异步执行周期性任务和一次性任务。然而,如果需要更...
META-INF/MANIFEST.MF ...org.springframework.web.util.WebUtils.class org/springframework/web/context/ContextLoader.properties org/springframework/web/util/HtmlCharacterEntityReferences.properties
Classes contained in spring-mock.jar: org.springframework.mock.jndi.ExpectedLookupTemplate.class org.springframework.mock.jndi.SimpleNamingContext.class org.springframework.mock.jndi....
1. 尚硅谷_SpringData_概述 2. 尚硅谷_SpringData_HelloWorld 3. 尚硅谷_SpringData_Repository接口 4. 尚硅谷_SpringData_Repository查询方法定义规范 5. 尚硅谷_SpringData_Query注解 6. 尚硅谷_SpringData_...
spring.jar spring-aop.jar spring-aop.jar spring-beans.jar spring-hibernate3.jar spring-jdbc.jar spring-struts.jar spring-web.jar
14.硅谷学习_SpringCloud_SpringCloud国内使用情况 15.硅谷学习_SpringCloud_Rest微服务案例-总体概述 16.硅谷学习_SpringCloud_Rest微服务案例-父工程构建步骤 17.硅谷学习_SpringCloud_Rest微服务案例-API公共...
META-INF/MANIFEST.MForg.springframework.web.struts.ActionServletAwareProcessor.class org.springframework.web.struts.ActionSupport.class org.springframework.web.struts.AutowiringRequestProcessor.class ...
- **依赖库**:Thymeleaf可能依赖于其他库,如Spring框架或DOM解析库,这些库通常会在发布包中一起提供。 6. **配置Thymeleaf**: 在Spring Boot中,通常在`application.properties`或`application.yml`中设置...
6. **集成Elasticsearch于Spring Boot**: 在Spring Boot项目中集成Elasticsearch,通常会使用Spring Data Elasticsearch库,它提供了一种方便的方式来操作Elasticsearch,包括索引创建、文档操作、查询等。...
spring-web.jar spring-web.jar
Spring cloud 与 Docker 实战总结
org.springframework.aop-3.1.1.RELEASE org.springframework.asm-3.1.1.RELEASE org.springframework.aspects-3.1.1.RELEASE org.springframework.beans-3.1.1.RELEASE org.springframework.context.support-3.1.1....
spring.cloud.config.server.git.uri=file://项目本地路径 spring.rabbitmq.host=RABBIT_HOST spring.rabbitmq.port=5672 spring.rabbitmq.username=RABBIT_USER spring.rabbitmq.password=RABBIT_PASSWORD configs/...
Chinese translation of the Spring Framework 4.x Reference Documentation (http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/) .中文翻译《Spring Framework 4.x参考文档》 — ...
例如,你可以创建一个接受POST请求的方法,该方法使用`@RequestBody`接收JSON数据,并用`@ResponseBody`返回结果。 ```java import org.springframework.web.bind.annotation.*; @RestController public class ...
本课程内容包括Spring简介、Spring Boot简介、安装JDK、安装Maven、第一个Spring Boot程序(使用Spring Initializr构建、Spring Boot代码讲解、安装Notepad++)、构建系统、代码、配置、三种方式运行程序、安装...
spring-hibernate.jar