-
初学DWR不是很懂,页面上显示undefined5
页面上显示的是undefined,主要是DWR没学过,还有setAttribute('id','info'+list[i]);appendChild(ele);innerHTML这些用法不是很清楚
到底是哪里出错了,照我的理解应该会显示出我需要的结果的啊,标题加内容
核心代码:var request; var minpage; var maxpage; var startindex; var hasnext; 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); searchService.getSearchResults(request,fillPage); } function fillPage(data){ var ID=data.id; var URL=data.url; var TITLE=data.title; var CONTENT=data.content; var resultdiv=document.getElementById('result'); var pagingdiv=document.getElementById('paging'); resultdiv.innerHTML=""; pagingdiv.innerHTML=""; if(ID.length==0){ resultdiv.innerHTML="<span>sorry, we can't find what you want...</span>"; return; } for(var i=0;i<ID.length;i++){ var ele=document.createElement('div'); //ele.setAttribute('id','info'+list[i]); ele.setAttribute('id','info'); ele.innerHTML="<span>loading..</span>"; resultdiv.appendChild(ele); var result=document.getElementById('info'); //result.innerHTML="<font color=\"#0033CC\">" + data.title + "</font><br /><a href=\"" + data.url + "\">" result.innerHTML="<a href=\"" + URL[i] + "\">" +"<font color=\"#0033CC\">" + TITLE[i] + "</font></a><br /><font color=\"#008000\">" + CONTENT[i] + "</font><br /><br /><br />"; //searchService.getSearchResultById(list[i],fillDetailResult); resultdiv.appendChild(result); }
public SearchResults getSearchResults(SearchRequest request){ SearchResults results=new SearchResults(); Query query=makeQuery(request.getQuery()); List <String>id=new ArrayList<String>();//id+title+url+content List<String>title=new ArrayList<String>(); List <String>url=new ArrayList<String>(); List <String>content=new ArrayList<String>(); try{ IndexSearcher searcher=new IndexSearcher(INDEX_STORE_PATH); Hits hits=searcher.search(query); int length=hits.length(); int startindex=request.getStartindex(); int endindex; if(startindex>length) { //不可能 } else{ endindex=startindex+9; if(endindex>=length){ endindex=length; } for(int i=startindex;i<=endindex;i++){ 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()); id.add(pageid); title.add(pagetitle); url.add(pageurl); content.add(pagecontent); } } results.setId(id); results.setTitle(title); results.setUrl(url); results.setContent(content); 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; results.setMinpage(startpage); results.setMaxpage(endpage); results.setHasnext(hasnext); results.setStartindex(startindex); }catch(Exception e){ e.printStackTrace(); } return results; }
问题补充:redstarofsleep 写道回调函数进去了吗?alert过吗,这些值都拿到了吗?引用
var ID=data.id;
var URL=data.url;
var TITLE=data.title;
var CONTENT=data.content;
---------------------
回调函数进去了的,alert的话,只有ID有值,其他有框没内容
问题补充:redstarofsleep 写道回调函数进去了吗?alert过吗,这些值都拿到了吗?引用
var ID=data.id;
var URL=data.url;
var TITLE=data.title;
var CONTENT=data.content;
--------------------------------
难到说是 list 里面不能放很长的String?
问题补充:
alert(ID)出现的不是id是
问题补充:redstarofsleep 写道DWR的返回值可以是String,List<String>,Map<String,String>这类的,你直接传回对象,可能会有问题
那主要的代码也在了,我实在找不出问题所在了,麻烦帮忙看看,改改
问题补充:那alert(ID)怎么不是id啊,问题出在哪呢?
问题补充:redstarofsleep 写道你把你那个对象换成Map的形式传回页面
然后用data['content']的方式取值
把title url content都改成Map? id当key?
问题补充:这个是resultspackage com.searcher.bo; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class SearchResults { private List <String>id=new ArrayList<String>();//id+title+url+content private List <String>title=new ArrayList<String>(); private List <String>url=new ArrayList<String>(); private List <String>content=new ArrayList<String>(); /*Map <String,String>title=new HashMap<String,String>(); Map <String,String>url=new HashMap<String,String>(); Map <String,String>content=new HashMap<String,String>(); */ private int startindex; private int minpage; private int maxpage; private int hasnext; public int getStartindex() { return startindex; } public void setStartindex(int startindex) { this.startindex = startindex; } public int getMinpage() { return minpage; } public void setMinpage(int minpage) { this.minpage = minpage; } public int getMaxpage() { return maxpage; } public void setMaxpage(int maxpage) { this.maxpage = maxpage; } public int getHasnext() { return hasnext; } public void setHasnext(int hasnext) { this.hasnext = hasnext; } public List<String> getId() { return id; } public void setId(List<String> id) { this.id = id; } /*public Map<String, String> getTitle() { return title; } public void setTitle(Map<String, String> title) { this.title = title; } public Map<String, String> getUrl() { return url; } public void setUrl(Map<String, String> url) { this.url = url; } public Map<String, String> getContent() { return content; } public void setContent(Map<String, String> content) { this.content = content; }*/ public List<String> getTitle() { return title; } public void setTitle(List<String> title) { this.title = title; } public List<String> getUrl() { return url; } public void setUrl(List<String> url) { this.url = url; } public List<String> getContent() { return content; } public void setContent(List<String> content) { this.content = content; } }
问题补充:redstarofsleep 写道你把你那个对象换成Map的形式传回页面
然后用data['content']的方式取值
兄台,麻烦给个示例啊,第一次接触DWR啊
getSearchResults方法返回的是results,
results我后面补充了他的代码,是个bean吧
bean里面有list这种数据
你说把那个对象换成Map的形式传回页面,具体怎么做啊,给个示例吧
问题补充:redstarofsleep 写道引用
private List <String>id=new ArrayList<String>();//id+title+url+content
private List <String>title=new ArrayList<String>();
private List <String>url=new ArrayList<String>();
private List <String>content=new ArrayList<String>();
你如果要让DWR能认出你的Java对象,那需要在DWR里面配置的。。
DWR直接能认出来的就是Java已经内置的几个对象String,Integer等,或者是这些对象的集合,List,Map
所以,这四个参数可以封装成Map<String,List<String>>,或者是List<List<String>>,这样的Javascript可以直接解析
-------------------------------------------------
那我int型的数据怎么办?private int startindex;
private int minpage;
private int maxpage;
private int hasnext;
问题补充:redstarofsleep 写道单个的值也可以封装成长度为一的List嘛
有取int型的,定义在最上面 我就没复制下来了,还要做运算的,分页用的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; results.setMinpage(startpage); results.setMaxpage(endpage); results.setHasnext(hasnext); results.setStartindex(startindex);
问题补充:redstarofsleep 写道public Map<String,List<String>> getSearchResults(SearchRequest request){ List<String> startindexList = new ArrayList<String>(); startindexList.add(Integer.toString(startindex)); map.put("startIndex",startindexList); } 这样子不行吗?
好复杂的说!!!!!!!不过意思明白了,先吃饭,谢谢啊
问题补充:redstarofsleep 写道public Map<String,List<String>> getSearchResults(SearchRequest request){ List<String> startindexList = new ArrayList<String>(); startindexList.add(Integer.toString(startindex)); map.put("startIndex",startindexList); } 这样子不行吗?
我修改了,结果还是那样啊,如图!!!!package com.searcher.service.impl; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.List; import org.apache.lucene.document.Document; import org.apache.lucene.index.Term; import org.apache.lucene.search.BooleanClause; import org.apache.lucene.search.BooleanQuery; 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.SearchRequest; import com.searcher.bo.SearchResult; import com.searcher.bo.SearchResults; import com.searcher.config.PropertyConfiguration; import com.searcher.service.SearchService; import com.searcher.service.dao.SearchResultDao; public class SearchServiceImpl implements SearchService{ /*private static final String PAGE_ID="pageid"; //private static final String INDEX_TIME="indextime"; private static final String PAGE_URL="pageurl"; private static final String PAGE_CONTENT="";*/ private static final String INDEX_STORE_PATH=PropertyConfiguration.getIndexStorePath(); private SearchResultDao searchResultDao; public Map<String,List<String>> getSearchResults(SearchRequest request){ //SearchResults results=new SearchResults(); List<String> id=new ArrayList<String>();//id+title+url+content List<String> title=new ArrayList<String>(); List<String> url=new ArrayList<String>(); List<String> content=new ArrayList<String>(); List<String> startpageList=new ArrayList<String>(); List<String> endpageList=new ArrayList<String>(); List<String> hasnextList=new ArrayList<String>(); List<String> startindexList=new ArrayList<String>(); Map<String,List<String>> map=new HashMap<String,List<String>>(); try{ IndexSearcher searcher=new IndexSearcher(INDEX_STORE_PATH); Hits hits; if(request.getQuery().indexOf(" ")!=-1){ BooleanQuery query1=makeBooleanQuery(request.getQuery()); hits=searcher.search(query1); } else{ Query query2=makeQuery(request.getQuery()); hits=searcher.search(query2); } //Hits hits=searcher.search(query2); int length=hits.length(); int startindex=request.getStartindex(); int endindex; if(startindex>length) { //不可能 } else{ endindex=startindex+9; if(endindex>=length){ endindex=length; } for(int i=startindex;i<=endindex;i++){ 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()); id.add(pageid); title.add(pagetitle); url.add(pageurl); content.add(pagecontent); } } //results.setId(id); //results.setTitle(title); //results.setUrl(url); //results.setContent(content); map.put("id",id); map.put("title",title); map.put("url",url); map.put("content",content); 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; startindexList.add(Integer.toString(startindex)); endpageList.add(Integer.toString(endpage)); hasnextList.add(Integer.toString(hasnext)); startpageList.add(Integer.toString(startpage)); map.put("startpage",startpageList); map.put("endpage", endpageList); map.put("hasnext", hasnextList); map.put("startindex", startindexList); //results.setMinpage(startpage); //results.setMaxpage(endpage); //results.setHasnext(hasnext); //results.setStartindex(startindex); }catch(Exception e){ e.printStackTrace(); } //return results; return map; } public SearchResult getSearchResultById(int id){ return searchResultDao.getSearchResultById(id); } public SearchResultDao getSearchResultDao(){ return searchResultDao; } public void setSearchResultDao(SearchResultDao searchResultDao){ this.searchResultDao=searchResultDao; } private Query makeQuery(String keys) {//可扩展 TermQuery qu=new TermQuery(new Term("all",keys.toLowerCase())); return qu; } private BooleanQuery makeBooleanQuery(String keys) {//可扩展 String[] que = keys.split(" "); BooleanQuery query = new BooleanQuery(); int length = que.length; TermQuery[] term = new TermQuery[length]; for(int i = 0; i < length; i++){ term[i] = new TermQuery(new Term("all", que[i].toLowerCase())); query.add(term[i], BooleanClause.Occur.MUST); } return query; } private String choose(String content,String keys){ /*String summary=""; int count=100; int summaryStart = content.indexOf(query) + query.length(); int summaryEnd = summaryStart + count; if(summaryEnd > content.length()){ summaryEnd = content.length(); } //if("".equals(summary)){ summary = "<font color=\"#FF0000\">" + query + "</font>" + content.substring(summaryStart, summaryEnd); // } // else{ // summary = summary + "..." + "<font color=\"#FF0000\">" + query + "</font>" + content.substring(summaryStart, summaryEnd); //} return summary;*/ content = content.replace(" ", ""); content = content.replace(" ", " "); 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; } }
function fillPage(data){ var ID=data['id']; var URL=data['url']; alert(URL); .......... }
问题补充:redstarofsleep 写道你看下data的length呢
另外,因为map里放的是List,所以data['url']这样的如果有数据的话,也是个数组啊
-----------------
能远程么,帮忙看看啊
问题补充:redstarofsleep 写道你看下data的length呢
另外,因为map里放的是List,所以data['url']这样的如果有数据的话,也是个数组啊
因为map里放的是List,所以data['url']这样的如果有数据的话,也是个数组啊。。。。。。。。。。。。。。。。。。。。。。具体呢?示例下
问题补充:redstarofsleep 写道你看下data的length呢
另外,因为map里放的是List,所以data['url']这样的如果有数据的话,也是个数组啊
data['url'][i]这里面还是没有数据啊
问题补充:redstarofsleep 写道你看下data的length呢
另外,因为map里放的是List,所以data['url']这样的如果有数据的话,也是个数组啊
---------------
还有个问题,我返回的是map吧,里面我压根就没minpage和maxpage,他居然有值,下面的代码,最后几行function fillPage(data){ //var ID=data.results.id; var ID=data['id']; var URL=data['url']; var TITLE=data['title']; var CONTENT=data['content']; alert(data.startpage); //alert(URL); //alert(data.id) //alert(TITLE); //alert(CONTENT); //var URL=ID.url; var resultdiv=document.getElementById('result'); var pagingdiv=document.getElementById('paging'); resultdiv.innerHTML=""; pagingdiv.innerHTML=""; if(ID.length==0){ resultdiv.innerHTML="<span>sorry, we can't find what you want...</span>"; return; } for(var i=0;i<ID.length;i++){ //alert(URL[i]); var ele=document.createElement('div'); //ele.setAttribute('id','info'+list[i]); ele.setAttribute('id','info'); ele.innerHTML="<span>loading..</span>"; resultdiv.appendChild(ele); var result=document.getElementById('info'); //result.innerHTML="<font color=\"#0033CC\">" + data.title + "</font><br /><a href=\"" + data.url + "\">" //result.innerHTML="<a href=\"" + URL[i] + "\">" //+"<font color=\"#0033CC\">" + TITLE[i] + "</font></a><br /><font color=\"#008000\">" + CONTENT[i] + "</font><br /><br /><br />"; //searchService.getSearchResultById(list[i],fillDetailResult); result.innerHTML=TITLE[i]; resultdiv.appendChild(result); } [color=red]minpage=data.minpage; maxpage=data.maxpage; //minpage=data.startpage;//这个和下面的反而是undefined //maxpage=data.endpage;[/color] startindex=data.startindex; hasnext=data.hasnext;
问题补充:redstarofsleep 写道应该是对的undefined是未定义,也就是根本就没有这个属性。
打印的是空的,才是有这个属性
那怎么会没属性呢?我在看书中。。。详细理解下DWR吧
看到一个例子,用来画表格的,不过他是用DWRUtil.addRows方法的,我再看看其他例子,学习学习看,原先JS只是接触过,没深入,要用到,只能补啦,不过现在稍微了解起来了,再看看,应该能解决吧
问题补充:redstarofsleep 写道应该是对的undefined是未定义,也就是根本就没有这个属性。
打印的是空的,才是有这个属性
把帮助文档看完了,还是不知道问题在哪。。。配置也应该是没错的啊
问题补充:redstarofsleep 写道应该是对的undefined是未定义,也就是根本就没有这个属性。
打印的是空的,才是有这个属性
这个是alert出的结果
2011年8月07日 10:45
10个答案 按时间排序 按投票排序
-
你看下data的length呢
另外,因为map里放的是List,所以data['url']这样的如果有数据的话,也是个数组啊2011年8月08日 13:23
-
public Map<String,List<String>> getSearchResults(SearchRequest request){ List<String> startindexList = new ArrayList<String>(); startindexList.add(Integer.toString(startindex)); map.put("startIndex",startindexList); } 这样子不行吗?
2011年8月08日 11:23
-
引用
var ID=data.id;
var URL=data.url;
var TITLE=data.title;
var CONTENT=data.content;
你从data中并没有取int型的参数啊,取的这4个都是List2011年8月08日 11:07
-
引用
private List <String>id=new ArrayList<String>();//id+title+url+content
private List <String>title=new ArrayList<String>();
private List <String>url=new ArrayList<String>();
private List <String>content=new ArrayList<String>();
你如果要让DWR能认出你的Java对象,那需要在DWR里面配置的。。
DWR直接能认出来的就是Java已经内置的几个对象String,Integer等,或者是这些对象的集合,List,Map
所以,这四个参数可以封装成Map<String,List<String>>,或者是List<List<String>>,这样的Javascript可以直接解析2011年8月08日 10:45
-
引用把title url content都改成Map? id当key?
不是这个意思。
你的DWR方法:public SearchResults getSearchResults(SearchRequest request){}
不要返回SearchResults这个对象,返回一个Map<String,String>的类型
map.put("ID",xxx);
map.put("URL",XXX);
页面获取值就是data['ID']2011年8月08日 10:37
-
DWR的返回值可以是String,List<String>,Map<String,String>这类的,你直接传回对象,可能会有问题
2011年8月08日 08:18
-
回调函数进去了吗?alert过吗,这些值都拿到了吗?
引用
var ID=data.id;
var URL=data.url;
var TITLE=data.title;
var CONTENT=data.content;2011年8月07日 14:36
相关推荐
学习的dwr的一个小例子,包括javascript中调用 返回元数据类型,List,Map,Pojo。很适合初学dwr的朋友。
本项目实现了使用DWR框架实现二级联动,并且实现了从服务器端提取数据集(List),使用表格动态显示到页面上的无刷新效果
DWR初学者笔记适合dwr初学者使用。内容丰富
dwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwr
本项目实现了使用DWR框架实现二级联动,并且实现了从服务器端提取数据集(list),使用表格动态显示到页面上的无刷新效果。附带两个验证码Servlet类(供相关项目参考),附带数据库
资源名称:适合初学者的DWR基本使用视频教程资源目录:【】dwr01_dwr的安装【】dwr02_dwr的转换器和异常处理【】dwr03_dwr的util的介绍【】dwr04_文件上传和与spring进行整合【】dwr05_dwr的debug和获取ServletAPI...
dwr 教程是初学者快速理解dwr的开发步骤
DWR初学者笔记,附带很好的例子
NULL 博文链接:https://iwfy.iteye.com/blog/266625
dwr 框架dwr 框架dwr 框架dwr 框架dwr 框架dwr 框架
dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;
自己做的一个dwr实例,dwr用着很方便,真是不错
不适合作为教程却是初学者不可或缺的学习文档,内详细的解说了dwr的配置及页面使用
dwr学习实例 初学者的宝,dwr学习实例 dwr实例 dwr初学者实例教程
dwr框架,解决前台的异步传输机制, 结合Spring框架完成页面不跳转就实现 后台请求。这个例子很典型
dwr初学入门小例子 非常简单的 刚刚开始做的 照着做两遍 保证你懂 很清晰的思路
DWR中文文档DWR中文文档DWR中文文档DWR中文文档DWR中文文档
用DWR框架做的一个在页面显示 返回为List类型数据的小例子,里面有详细的注释,用MyEclipse做的,可以直接运行。
dwr源码
dwr笔记 dwr自学资料 dwr笔记 dwr自学资料 dwr笔记 dwr自学资料