首先是两者的区别(资料来源于百度)
Ajax的使用比较灵活,可以用于ExtJS中许多组件的提交,在页面上可以获取你从后台传送过来的若干个值,在传参数的提交中有点需要注意:一、如果值传一到两个参数,并且参数值不是中文的情况下,可以在servlet的后面直接带参数来传送;二、如果传的参数过多,或者需要传送中文到后台,那么建议在Ajax中使用params属性,写法如:params:{name:‘value’,psd:‘密码’},这种情况传送的话,在后台就不会出现中文乱码的问题,而且书写也比较美观。接收值的话使用var json = Ext.util.JSON.decode(result.responseText);,这个你定义的json是你从servlet中获取的JSON对象,然后调用JSON对象的属性,就是你需要获取的值。
submit用在一个FormPanel的提交,这种方式的提交在对于表单来说的话比较方便(相对于Ajax提交来说),它的这种提交在url中不用带参数,它会自动将FormPanel中所有的组件值传递到后台,而且你在提交之前还可以做一个判断if (FormName.getForm().isValid()),这表示当你的表单组件全部通过验证之后,你的数据才会提交打后台(例如:一个textfield需要让你输入一个不带小数点的数字,而这个时候你输入了一个带小数点的数字的话,当你点击提交按钮的时候,submit不会出发,并且会在你的textfield组件上使用红色的线来标示这个组件的输入出现了问题)。但是在获取值方面不如Ajax灵活,只能获取success属性的值。
标题 我第一个思路的难题
1.原本的思路是用ajax的方式发送get请求方式,通过后台返回模糊查询的结果,然后显示出来,奈何自己的success方法和error都没有被执行,自己也不知道为什么,所以,这个思路就放弃了。
这是我的代码,有没有高手可以解惑一下
标题换个思路 不用ajax的方式了,改成在按钮的时候,用submit过去
后端接受处的代码
这个是findlist的代码
//在carNumber处使用了int定义,没有使用包装类型来定义,传入了int的默认值0,导致的失败。
//
public PageBean<carRepair> findList(carRepair carrepair, PageBean<carRepair> pageBean){
//文本框里输入的字段模糊匹配
ExampleMatcher withMatcher = ExampleMatcher.matching().withMatcher("carProblem", ExampleMatcher.GenericPropertyMatchers.contains());
//example包含两个部分组成,分别是probe、matcher两部分,其中probe是实体类,包含用于查询的参数,另一个matcher是比对规则,用于设置比对语句,第一行是构造查询条件
Example<carRepair> example = Example.of(carrepair, withMatcher);
//第二行是构造分页条件
Pageable pageable = PageRequest.of(pageBean.getCurrentPage()-1, pageBean.getPageSize());
// 第三行是查询
Page<carRepair> findAll = carrepairDao.findAll(example, pageable);
//把值传入里面
pageBean.setContent(findAll.getContent());
pageBean.setTotal(findAll.getTotalElements());
pageBean.setTotalPage(findAll.getTotalPages());
return pageBean;
}
标题 重点(个人的思路)
通过这个代码的方式就可以实现了页面初次加载的时候,模糊匹配是null,返回全部的值
然后在输入框那里输入信息,就根据自断进行模糊匹配且分页