0 0

返回一个List,alert出里面的数据相同,十万火急5

下面这段代码,我运行后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("&nbsp;", " ");
	 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插件

看到图片没,照我想的,应该都是不一样的,但是结果却是一样的,我就是想不通为什么,看来好久的代码,没发现哪里出错,帮忙看下啊,不复杂的
DWR 
2011年8月14日 11:14
  • 大小: 44.9 KB
  • 大小: 75.3 KB

3个答案 按时间排序 按投票排序

0 0

建议存到MAP集合中
用键值去取

2011年8月25日 17:33
0 0

服务器端代码不是你写的?


服务器端代码你用什么IDE写的~~~

你启动服务器端的中间件是什么?tomcat,jetty?

你怎么启动服务 器的~~~

2011年8月14日 13:15
0 0

引用
这种情况怎么debug Java代码啊?


没明白 你想怎么个DEBUG


不就用eclipse,或netbean自带的debug就可以了吗
启动的时候以debug方式起动~~

2011年8月14日 11:41

相关推荐

Global site tag (gtag.js) - Google Analytics