(原创,转载请注明)
接上篇
struts2和Jquery EasyUI整合数据查询(DataGrid)一
QueryAction.java:
public abstract class QueryAction extends ActionSuppot
{
/**
*
*/
private static final long serialVersionUID = -3068675701440713082L;
// easyUI前台传过来的请求页数,故必须以此命名,当然你也可以不这样,但set方法必须是setPage
private int page;
// easyUI前台传过来的请求记录数,故必须以此命名,原因同上
private int rows;
// easyUI前台传过来的排序字段,故必须以此命名,原因同上
private String sort;
// easyUI前台传过来的排序方式(desc?asc),故必须以此命名,原因同上
private String order;
@Override
public abstract String execute() throws Exception;
//getter&&setter...
}
OrderQueryAction:
public class OrderQueryAction extends QueryAction
{
// 查询条件
private OrderQueryConditon condition;
// 返回页面的json对象
private JSONObject result;
// 这是service,请根据自己具体实际情况修改
private RoomService roomTypeService;
// 这是查询条件的KEY,每次查询把查询条件放session里面
public static final String ORDER_QUERY_KEY = "order_query_key";
@Override
public String execute() throws Exception
{
// 防止空指针,暂时做的很差劲的处理
if (condition == null)
{
condition = new OrderQueryConditon();
}
// 设置前台传来的排序字段和排序方式
condition.setSortObj(new SortObject(getSort(), getOrder()));
// 图里面提到的,主要是转换一些特殊字段,如Date时进行处理的配置
JsonConfig config = new JsonConfig();
config.registerJsonValueProcessor(Date.class,
new RoomTypeJsonValueProcessor());
// 设置我自己封装的JsonBean对象
JsonBean<Order> jsonDb = roomTypeService.queryOrderList(condition,
getPage(), getRows());
json.setRows(jsonDb.getRows());
json.setTotal(jsonDb.getTotal());
// 这就是为什么要封装JsonBean的原因,一步转化成Json对象
result = JSONObject.fromObject(json, config);
ServletActionContext.getRequest().getSession().setAttribute(
ORDER_QUERY_KEY, condition);
return SUCCESS;
}
//getter&&setter...
}
顺带提一下上面代码出现的RoomTypeJsonValueProcessor,其实就是对Date进行处理
RoomTypeJsonValueProcessor.java: