我正在使用Apache POI进行Excel导出。我希望能够包含一个查询字符串来限制导出的内容,但我最终得到0个文档或获得一些文档。
当我得到一些文档时,目前还不清楚是否实际修改了视图对象。它仍然使用13个文档响应getEntryCount,但只导出2并且不打印这两个的columnValues。如果我不使用搜索,它会完美地导出整个视图。
服务器端javascript有这几个相关的行。
function createWorkbookStreamWithLabels(workbookName,sheetName,fieldList,dbName,viewName,colLabels,totalLabels,queryString){
...a bunch of other code to get a handle to the view...
postValidationError(control,"Entries: " + view.getEntryCount());
var docCount = view.FTSearchSorted(queryString);
postValidationError(control,"Query: " + queryString);
postValidationError(control,"Query count: " + docCount);
if ( docCount == 0) return;
...code that walks the view and prints the contents...
}
我的0次点击查询包括:
FIELD lastname CONTAINS e
和
[state] CONTAINS V
得到两次点击的那个很简单:
VA
视图已排序,现在数据库已全文索引。现在对包含State的列进行排序,然后单击以排序,升序。
仅供参考,这是显示我的状态信息的功能。
function postValidationError(control, msg) {
if ((typeof msg) != "string")
return;
var msgObj = new javax.faces.application.FacesMessage(javax.faces.application.FacesMessage.SEVERITY_ERROR, msg, msg);
facesContext.addMessage(control.getClientId(facesContext), msgObj);
control.setValid(false);
}
我做错了什么?
更新:我的搜索查询问题已经解决,但我的代码似乎也很容易崩溃HTTP或服务器。