下面这段代码,我运行后alert出来全是相同的东西,那问题就应该在searchService.getSearchResults(request,fillPage);返回的List里,但我自己把这个方法单独验证了下,好像是没问题的,List里存的是不一样的results,这种情况怎么debug Java代码啊?
function doSearch(type){
var result=document.getElementById("result");
var pagingdiv=document.getElementById('paging');
result.innerHTML="";
pagingdiv.innerHTML="";
if(type!='paging'){
var startindexinput=document.getElementById('startindex');
startindexinput.value="1";
}
request={startindex:1,query:""};
DWRUtil.getValues(request);
//DWREngine.setAsync(true);
searchService.getSearchResults(request,fillPage);
//DWREngine.setAsync(false);
}
function fillPage(data){
alert(DWRUtil.toDescriptiveString(data,2));
var resultdiv=document.getElementById('result');
var pagingdiv=document.getElementById('paging');
resultdiv.innerHTML="";
pagingdiv.innerHTML="";
if(data.length==0){
resultdiv.innerHTML="<span>sorry, we can't find what you want...</span>";
return;
}
if(null!=data){
for(var i=0;i<data.length;i++){
//alert(data[i].id);
var results=data[i];
alert(results);
var ele=document.createElement('div');
ele.setAttribute('id','info'+i);
ele.innerHTML="<span>loading..</span>";
resultdiv.appendChild(ele);
var res=document.getElementById('info'+i);
res.innerHTML = "<a href=\"" + data[i].url + "\">"
+ "<font color=\"#0033CC\">" + results.title
+ "</font></a><br /><font color=\"#008000\">"
+ data[i].content + "</font><br /><br /><br />";
resultdiv.appendChild(res);
}
}
public class SearchServiceImpl implements SearchService{
public List<SearchResults> getSearchResults(SearchRequest request){
List<SearchResults> list=new ArrayList<SearchResults>();
//省去一些代码
for(int i=startindex;i<=endindex;i++){
SearchResults results=new SearchResults();
results.setMinpage(startpage);
results.setMaxpage(endpage);
results.setHasnext(hasnext);
results.setStartindex(startindex);
Document doc =hits.doc(i-1);
String pageid=doc.get("pageid");
String pagetitle=doc.get("title");
String pageurl=doc.get("url");
String pagecontent=choose(doc.get("content"),request.getQuery());
results.setId(pageid);
results.setTitle(pagetitle);
results.setUrl(pageurl);
results.setContent(pagecontent);
list.add(results);
}
}
}catch(Exception e){
e.printStackTrace();
}
return list;
}
下面是我单独验证返回的list的值的方法
验证输出证明list里的数据是不一样的
package com.searcher.test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
import com.searcher.bo.SearchResults;
import com.searcher.config.PropertyConfiguration;
public class Test {
private static final String INDEX_STORE_PATH=PropertyConfiguration.getIndexStorePath();
public void getSearchResults(String query){
List<SearchResults> list=new ArrayList<SearchResults>();
try{
IndexSearcher searcher=new IndexSearcher(INDEX_STORE_PATH);
Hits hits;
Query query2=makeQuery(query);
hits=searcher.search(query2);
int length=hits.length();
int startindex=1;
int endindex;
if(startindex>length)
{
//不可能
}
else{
endindex=startindex+9;
if(endindex>=length){
endindex=length;
}
int startpage;
int endpage;
if(startindex%100==0){
startpage=(startindex/100-1)*10+1;
}
else{
startpage=(startindex/100)*10+1;
}
int span;
int hasnext;
float temp=((float)(length-(startpage-1)*10))/10;
if(temp>10)
{
span=9;
hasnext=1;
}
else if(temp==10){
span=9;
hasnext=0;
}
else{
hasnext=0;
if((int)temp<temp){
span=(int)temp;
}
else{
span=(int)temp-1;
}
}
endpage=startpage+span;
for(int i=startindex;i<=endindex;i++){
SearchResults results=new SearchResults();
Document doc =hits.doc(i-1);
String pageid=doc.get("pageid");
String pagetitle=doc.get("title");
String pageurl=doc.get("url");
String pagecontent=choose(doc.get("content"),query);
System.out.println(i+pagecontent);
results.setMinpage(startpage);
results.setMaxpage(endpage);
results.setHasnext(hasnext);
results.setStartindex(startindex);
results.setId(pageid);
results.setTitle(pagetitle);
results.setUrl(pageurl);
results.setContent(pagecontent);
list.add(results);
/*Iterator<SearchResults> it=list.iterator();
while(it.hasNext()){
SearchResults res=(SearchResults)it.next();
System.out.println(res.getId());
System.out.println(res.getUrl());
System.out.println(res.getTitle());
System.out.println(res.getContent());
System.out.println(res.getMinpage());
System.out.println(res.getMaxpage());
System.out.println(res.getHasnext());
System.out.println(res.getStartindex());
}*/
}
}
}catch(Exception e){
e.printStackTrace();
}
Iterator<SearchResults> it=list.iterator();
while(it.hasNext()){
SearchResults res=(SearchResults)it.next();
System.out.println(res.getId());
System.out.println(res.getUrl());
System.out.println(res.getTitle());
System.out.println(res.getContent());
System.out.println(res.getMinpage());
System.out.println(res.getMaxpage());
System.out.println(res.getHasnext());
System.out.println(res.getStartindex());
}
}
private Query makeQuery(String keys) {//可扩展
TermQuery qu=new TermQuery(new Term("all",keys.toLowerCase()));
return qu;
}
private String choose(String content,String keys){
content = content.replace(" ", "");
content = content.replace(" ", " ");
content = content.trim();
String summary = "";
String[] k = keys.split(" ");
int maxChar = 100;
int l = k.length;
int summaryStart = 0;
int summaryEnd = 0;
// 单关键字
if(l == 1){
summaryStart = content.indexOf(k[0]) + k[0].length();
summaryEnd = summaryStart + maxChar;
if(summaryEnd > content.length()){
summaryEnd = content.length();
}
summary = content.substring(summaryStart, summaryEnd);
// 将关键字置位红色
summary = "<font color=\"#FF0000\">" + k[0] + "</font>" + summary;
}
// 多关键字
else{
int count = maxChar / l;
if(count < 5){
count = 5;
}
for(int j = 0; j < l; j++){
summaryStart = content.indexOf(k[j]) + k[0].length();
summaryEnd = summaryStart + count;
if(summaryEnd > content.length()){
summaryEnd = content.length();
}
if("".equals(summary)){
summary = "<font color=\"#FF0000\">" + k[j] + "</font>" + content.substring(summaryStart, summaryEnd);
}
else{
summary = summary + "..." + "<font color=\"#FF0000\">" + k[j] + "</font>" + content.substring(summaryStart, summaryEnd);
}
}
}
return summary;
}
public static void main(String[] args)throws Exception{
Test test=new Test();
test.getSearchResults("游泳");
}
}
问题补充:suziwen 写道
引用
这种情况怎么debug Java代码啊?
没明白 你想怎么个DEBUG
不就用eclipse,或netbean自带的debug就可以了吗
启动的时候以debug方式起动~~
额。。。代码都在这了,为什么我传给回调函数的值,alert出来全是一样的啊,我验证过,传过去的应该是不一样的值啊
问题补充:suziwen 写道
引用
这种情况怎么debug Java代码啊?
没明白 你想怎么个DEBUG
不就用eclipse,或netbean自带的debug就可以了吗
启动的时候以debug方式起动~~
这个不是一张JSP页面么?都是JS和html标签,没DUBUG过。。。跟debug Java代码一样?
问题补充:suziwen 写道
引用
这种情况怎么debug Java代码啊?
没明白 你想怎么个DEBUG
不就用eclipse,或netbean自带的debug就可以了吗
启动的时候以debug方式起动~~
这个不是DWR技术么,他不是靠JS来调用Java的方法么,那我想知道Java代码那里有没有执行错,要怎么弄,就是这么个问题?
问题补充:suziwen 写道
服务器端代码不是你写的?
服务器端代码你用什么IDE写的~~~
你启动服务器端的中间件是什么?tomcat,jetty?
你怎么启动服务 器的~~~
是我写的啊
eclipse
tomcat插件
看到图片没,照我想的,应该都是不一样的,但是结果却是一样的,我就是想不通为什么,看来好久的代码,没发现哪里出错,帮忙看下啊,不复杂的
相关推荐
java计算同一个list中是否有相同的值
Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并 Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并
事情: 从java后台返回List类型数据,用于界面显示。但js中想获取它并操作它。直接使用EL表达式,js把它识别成字符串了。不是我想要的啊。。网上搜了搜大家的解决方案…最好的当然是把List集合转成json格式传到界面...
比较两个集合是否相同...利用Java反射机制,获取到字段名、方法名、字段值,进行逐个比较,此处本人封装好了工具类,接收的是泛型,调用者只需要传入两个实体List即可进行比较,返回true则为相同,返回false则不相同。
通常做机器学习问题时,需要准备训练数据,通常会把样本数据和标签存放于2个list中,比如train_x = [x1,x2,…,xN][x1,x2,…,xN],train_y = [y1,y2,…,yN][y1,y2,…,yN]. 有时候是需要将数据shuffle后再做处理的...
为仅实例化的list对象添加数据,list<>.count==0的时候,给其添加数据!
java对Excel表格数据处理并以List集合返回(只要传Excel文件路径即可)
基于新版本的POI编写的读取Excel文件数据的工具类,可根据绝对路径、File对象、InputSteam对象读取解析Excel文件内容,并返回List<List<String>>格式结果,其中包含对单元格公式的处理。
jasperreport创建多个List数据源报表 通多个detail实现多个table效果,简单 快捷
一个list里面有多个对象,对象有几个字段,要求在对象里面不要有重复的数据的实现。
将一个比较大的list分割为多个小的list,可以解决mybatis批量插⼊数据list超过⼀定长度时报错的解决办法
应用场景:使用pandas把多个相同结构的Excel文件合并为一个。 原始数据: 相关代码: import os import pandas as pd # 将文件读取出来放一个列表里面 pwd = 'test' # 获取文件目录 # 新建列表,存放文件名 ...
1. 请创建一个数据类型为T的链表类模板List,实现以下成员函数: 1) 默认构造函数List(),将该链表初始化为一个空链表(10分) 2) 拷贝构造函数List(const List& list),根据一个给定的链表构造当前链表(10分)...
比较list得到不同的对象 慎重注意list的大小变化和索引 精简算法
Java将2个List集合合并到一个List里面并排序工具类 1、Java编程资源,定义了一个名为`ListMerger`的工具类,主要包含一个名为`mergeAndSortLists`的静态方法。此方法用于将两个已经根据时间顺序排列的List合并成一...
将多个相同的list组合到一个list中,在数据库中进行批处理。
sturts框架下返回json数据,可以是 list对象 map对象 或者java类对象等,这是一个完整的实例,里面有jar包。
NULL 博文链接:https://luan.iteye.com/blog/1824843
wpf实现拖拽效果实例 实现从一个listbox拖拽一条数据放到另外一个listbox中
ListCtrl 数据修改 添加 删除 动态 自绘ComboBox控件