2016-03-25 22 views
1

MVC için yeni ve this link takip ediyorum Solr kullanarak pdf meta verileri için bir arama sayfam var. Benim if ifadesi ve html tarafında döngü modeller klasöründeFramework IF deyimi ve for döngüsü

Searching.java çalışmaz: Application.java içinde

public class Searching { 

    public String q; 

    public String outputTitle; 
    public String outputAuthor; 
    public String outputContent; 
    public String outputPage; 
    public String outputPath; 

} 

arama işlevi:

final static Form<Searching> searchForm = form(Searching.class); 
    final static List<Searching> searchList = new ArrayList<Searching>(); 

public static Result search() { 
Form<Searching> filledForm = searchForm.bindFromRequest(); 
     Searching searched = filledForm.get(); 

....(database connection lines) 

QueryResponse response = solr.query(query); 
SolrDocumentList results = response.getResults(); 
    if(results.isEmpty()) 
       System.out.println("SEARCH NOT FOUND"); 
    else { 
     for (int i = 0; i < results.size(); ++i) { 

      searched.outputTitle = (String)results.get(i).getFirstValue("title"); 
      searched.outputAuthor = (String)results.get(i).getFirstValue("author"); 
      searched.outputPage =results.get(i).getFirstValue("pageNumber").toString(); 
      searched.outputContent = (String)results.get(i).getFirstValue("content"); 
      searched.outputPath = (String)results.get(i).getFirstValue("path");  
      searchList.add(searched); 
     } 
     System.out.println("\nresults.getNumFound(): "+ searched.outputFound); 
     System.out.println("results.size(): "+results.size()); 
     } 
    return play.mvc.Results.ok(search.render(searched, searchForm, searchList)); 
    } 

search.scala.html

Java kodu iyi çalışıyor. Terminalde çıktıları görebiliyorum ama html tarafımın sorunu var ve arama kitaplığına göre birçok kez bir kitap gösteriliyorList

+1

Değişkenlerinize ve parametrelere gerçekten uygun isimler vermelisiniz. Her neyse, şablonda yineleme için kullandığınız 'listForm: List [Searching]' parametresi boş. Listeyi veriyle doldurun ya da başka bir şey üzerinde yineleyin – Anton

+0

Doğru isimler neyi kastediyorsunuz? Daha sonra Application.java –

+1

'de döngü için içeride değişiklik yapmam gerektiğini düşünüyorum.' ListForm 'parametrenize bir isim verin ve sonra' List [Searching] 'türünde olduğunu söyleyin, gerçekten sezgisel değildir. Mesele şu ki, sadece biraz statik alan yaratıyorsunuz ve onu şablona aktarıyorsunuz - tabi ki hiç bir veri içermeyecek. Java kodunda başka bir problem de vardır - “sonuç” üzerinde yineleyin, ancak sadece bir değişken kullanın ('searched') - bu şekilde her zaman verilerin üzerine yazılır. – Anton

cevap

0

Sohbet'de OP'ye yardımcı olabilsem bile cevabı açıkça gönderiyorum - belki başkası böyle bir soruna yol açıyor ama sohbeti kontrol etmedi:

Sorun şu ki, döngüde hala sizde aynı searched değişkenini kullanıyorsunuz. Yapmanız gereken, değişkeni girerken değişkeni yeniden başlatmaktır. Bir şey gibi:

for (...) { 
    searched = new Searching(); 
    searched.outputTitle = (String)results.get(i).getFirstValue("title"); 
    .... 
    searchList.add(searched); 
} 

Bu tekrarlar da sorunu çözer ve her şeyi şimdi gayet iyi.