查询参数

2024-03-07 18:38 更新

DataProvider前端向后端发出ajax请求的时候,不可避免的会有一些查询条件的设置。

基本使用方法

我们分前端和后端分别加以说明。

前端(JavaScript)

//dsBranch和dsDept都是DataSet对象
var branch = dsBranch.getData();
dsDept.setParameter("branchId", branch.get("id"));
dsDept.flushAsync();//触发后端的DataProvider方法查询数据

我们通过DataSet的parameter属性设置查询参数,并调用DataSet的flushAsync方法触发后端的DataProvider方法进行数据查询。

后端(Java)

@DataProvider
public Collection<Dept> getDeptsByBranchId(String branchId) throws Exception {
    return depttDao.getDeptsByBranchId(branchId);
}

在DataProvider方法中我们通过一个String类型的branchId获取前端传入的查询条件branchId。

多个查询条件

在前面的例子中,查询条件只有一个,比较简单,如果查询条件不止一个参数,那么我们可以用一个JSON定义:

//dsBranch和dsDept都是DataSet对象
var branch = dsBranch.getData();
dsDept.setParameter({
    "branchId": branch.get("id"),
    "branchName": branch.get("name")
});
dsDept.flushAsync();//触发后端的DataProvider方法查询数据

多个参数 对应的Java端的处理代码:

@DataProvider
public Collection<Dept> getDeptsByBranchId(String branchId, String branchName) {
    return depttDao.getDeptsByBranchId(branchId, branchName);
}

在编写Java后端代码处理的时候,我们只要保证对应的参数名一致就可以。 Map参数 如果参数特别多情况下,我们也可以在Java端直接使用Map接收数据:

@DataProvider
public Collection<Dept> getDeptsByBranchId(Map<String, Object> parameters) throws Exception {
    String branchId = (String)parameters.get("branchId");
    String branchName = (String)parameters.get("branchName");
    return productDao.getDeptsByBranchId(branchId, branchName);
}

对象参数 如果我们觉得上述的多个参数在服务端用Map接收参数的编程方式不好的话,也可以改用对象参数接收。 为了实现对象参数接收,我们首先需要在dorado的model文件中定义一个全局的DataType: 注意设置matchType属性对应为你需要的Java对象。 之后在客户端上传参数的时候,你只要添加一个$dataType属性指定为Branch就可以:

//dsBranch和dsDept都是DataSet对象
var branch = dsBranch.getData();
dsDept.setParameter({
    $dataType : "Branch",//设置json的$dataType属性
    "id": branch.get("id"),
    "name": branch.get("name")
});
dsDept.flushAsync();//触发后端的DataProvider方法查询数据

客户端设置了$dataType属性后上传到服务器端dorado引擎查找匹配的DataProvider方法的时候,就会自动在全局的model配置文件中查找匹配的DataType,并且将相关数据自动转换为对应DataType配置好的matchType属性对应Java类的实例中,本例就是Branch.java对象。 这样我们的DataProvider端的Java代码就可以改写为:

@DataProvider
public Collection<Dept> getDeptsByBranchId(Branch branch) throws Exception {
    String branchId = branch.getId();
    String branchName = branch.getName();
    return productDao.getDeptsByBranchId(branchId, branchName);
}

通过上述方法我们就可以多参数查询对象化的处理。

参数类型处理

查询参数除了String类型自然还有其它的数据类型,DataProvider的查询也是支持的,例如:

//dsCategory, dsProduct都是DataSet对象
var category = dsCategory.getData();
dsProduct.setParameter("categoryId": category.get("id"));
dsProduct.flushAsync();//触发后端的DataProvider方法查询数据

对应的Java端的处理代码:


@DataProvider
public Collection<Product> getProductsByCategoryId(Long categoryId) {
    return productDao.getProductsByCategoryId(categoryId);
}
```# 查询参数# 查询参数
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号