我使用jQuery DataTable在表中显示大量数据.我正在Ajax请求上获取数据页面,如下所示:
var pageNo = 1;
$('#propertyTable').dataTable( {
"processing": true,
"serverSide": true,
"ajax": "${contextPath}/admin/getNextPageData/"+pageNo+"/"+10,
"columns": [
{ "data": "propertyId" },
{ "data": "propertyname" },
{ "data": "propertyType" },
{ "data": "hotProperties" },
{ "data": "address" },
{ "data": "state" },
{ "data": "beds" },
{ "data": "city" },
{ "data": "zipCode" }
],
"fnDrawCallback": function () {
pageNo = this.fnPagingInfo().iPage+1;
alert(pageNo); // this alerts correct page
}
} );
Run Code Online (Sandbox Code Playgroud)
这是弹簧控制器:
@RequestMapping(value="/getNextPageData/{pageNo}/{propertyPerPage}")
public @ResponseBody PropertyDatatableDto getNextPageData(@PathVariable Integer pageNo, @PathVariable Integer propertyPerPage) …Run Code Online (Sandbox Code Playgroud) 每当循环中的迭代变得更高时,我就会得到StackOverflowError.我写这样的逻辑:
public List<Vehicle> seacrhCar(Integer from, SearchDto searchDto,List<String> coveredZipcodes) {
String q = "from Vehicle where 1=1";
int i=1;
if(StringUtils.isNotBlank(searchDto.getFromYear()))
q+=" and year>='"+StringUtils.replace(searchDto.getFromYear().trim(), "'", "''")+"'";
if(StringUtils.isNotBlank(searchDto.getToYear()))
q+=" and year<='"+StringUtils.replace(searchDto.getToYear().trim(), "'", "''")+"'";
if(StringUtils.isNotBlank(searchDto.getManufacturer()))
q+=" and make='"+StringUtils.replace(searchDto.getManufacturer().trim(), "'", "''")+"'";
if(StringUtils.isNotBlank(searchDto.getCarModel()))
q+=" and model='"+StringUtils.replace(searchDto.getCarModel(), "'", "''")+"'";
if(StringUtils.isNotBlank(searchDto.getTrim()))
q+=" and trim='"+StringUtils.replace(searchDto.getTrim().trim(), "'", "''")+"'";
if(StringUtils.isNotBlank(searchDto.getMinPrice()))
q+=" and priceBaseMsrp>="+searchDto.getMinPrice().trim();
if(StringUtils.isNotBlank(searchDto.getMaxPrice()))
q+=" and priceBaseMsrp<="+searchDto.getMaxPrice().trim();
if(coveredZipcodes.size()>0) {
q+=" and (";
for(String zip : coveredZipcodes) {
q+="zipcode LIKE '%"+zip+"'";
q+=(i==coveredZipcodes.size())?")":" or ";
i++;
}
}
q+=" group by vehicle";
List<Vehicle> …Run Code Online (Sandbox Code Playgroud) 我如何编写 HQL 来检查字段是否包含字符串列表中的任何字符串。我试过这个:
StringBuffer queryString = new StringBuffer("from Property p where status is true");
if(!searchDto.getLocationTokens().isEmpty()) {
queryString.append(" and p.city in (:locationTokens) or p.state in (:locationTokens) or p.zipcode in (:locationTokens)");
for(String locationToken : searchDto.getLocationTokens()) {
queryString.append(" or p.address LIKE "+locationToken+"%");
}
}
Query query = sessionFactory.getCurrentSession().createQuery(queryString.toString());
if(!searchDto.getLocationTokens().isEmpty())
query.setParameterList("locationTokens", searchDto.getLocationTokens());
List<Property> properties = query.list();
Run Code Online (Sandbox Code Playgroud)
但它抛出异常。
在上面的代码中,for-each 循环部分是造成问题的一个原因。
任何帮助表示赞赏。
下面是我得到的异常的堆栈跟踪
19 May 2015 16:42:54,209 ERROR ErrorCounter:54 - line 1:180: unexpected token: null
19 May 2015 16:42:54,211 ERROR ErrorCounter:50 - line 1:180: unexpected …Run Code Online (Sandbox Code Playgroud) hibernate ×2
java ×2
spring ×2
ajax ×1
datatables ×1
hql ×1
javascript ×1
jquery ×1
spring-mvc ×1