Reputation: 813
I have a weird problem ..
That is , in my program, a called a function after body tag. But the output comes in unexpected location that is above html tag !!!
Program : JSP page [server]
<body>
<div>
<%
if (request.getParameter ("query") != null)
{
String query2 = request.getParameter ("query");
String srch2 = request.getParameter("searchby");
SimpleSuggestionService smp =new SimpleSuggestionService ();
if (!srch2.equals("No"))
{
//below the mentioned out function call
smp.Suggest(response.getWriter(), query2,config.getServletContext().getRealPath("/")+"WEB-INF/wordlist/spin/",config.getServletContext().getRealPath("/")+"WEB-INF/wordlist/whole_2_2.txt");
out.println ("<h1>hello</h1>");
}
}
else out.println("suggestions :");
%>
</div>
<div id="templatemo_body_wrapper">
<div id="templatemo_wrapper">
In the above program , the output of the function smp.Suggest(...) have to printed inside body tag.
but it printed above HTML tag starting !!
Output page [unexpected location ]
<div style="height: 180px; overflow: auto; position: absolute; top: 622px; left: 333px; z-index: 10; width: 476px;" > Did you mean:<br>
<a href=searchpatent.jsp?query=methods&searchby=Title+%2F+Name&ext=none > methods</a> | <a href=searchpatent.jsp?query=methody&searchby=Title+%2F+Name&ext=none > methody</a> | <a href=searchpatent.jsp?query=method's&searchby=Title+%2F+Name&ext=none > method's</a> | <a href=searchpatent.jsp?query=methodic&searchby=Title+%2F+Name&ext=none > methodic</a> | <a href=searchpatent.jsp?query=methodics&searchby=Title+%2F+Name&ext=none > methodics</a> | <a href=searchpatent.jsp?query=methodios&searchby=Title+%2F+Name&ext=none > methodios</a> | <a href=searchpatent.jsp?query=methodise&searchby=Title+%2F+Name&ext=none > methodise</a> | <a href=searchpatent.jsp?query=methodism&searchby=Title+%2F+Name&ext=none > methodism</a> | <a href=searchpatent.jsp?query=methodist&searchby=Title+%2F+Name&ext=none > methodist</a> | <a href=searchpatent.jsp?query=methodize&searchby=Title+%2F+Name&ext=none > methodize</a> | <a href=searchpatent.jsp?query=methods&searchby=Title+%2F+Name&ext=none > methods</a> | <a href=searchpatent.jsp?query=methody&searchby=Title+%2F+Name&ext=none > methody</a> | <a href=searchpatent.jsp?query=methol&searchby=Title+%2F+Name&ext=none > methol</a> | <a href=searchpatent.jsp?query=method's&searchby=Title+%2F+Name&ext=none > method's</a> | <a href=searchpatent.jsp?query=methodic&searchby=Title+%2F+Name&ext=none > methodic</a> | <a href=searchpatent.jsp?query=methols&searchby=Title+%2F+Name&ext=none > methols</a> | <a href=searchpatent.jsp?query=poethod&searchby=Title+%2F+Name&ext=none > poethod</a> | <a href=searchpatent.jsp?query=methodics&searchby=Title+%2F+Name&ext=none > methodics</a> | <a href=searchpatent.jsp?query=methodios&searchby=Title+%2F+Name&ext=none > methodios</a> | <a href=searchpatent.jsp?query=methodise&searchby=Title+%2F+Name&ext=none > methodise</a> | <a href=searchpatent.jsp?query=methol&searchby=Title+%2F+Name&ext=none > methol</a> | <a href=searchpatent.jsp?query=methods&searchby=Title+%2F+Name&ext=none > methods</a> | <a href=searchpatent.jsp?query=methody&searchby=Title+%2F+Name&ext=none > methody</a> | <a href=searchpatent.jsp?query=methols&searchby=Title+%2F+Name&ext=none > methols</a> | <a href=searchpatent.jsp?query=method's&searchby=Title+%2F+Name&ext=none > method's</a> | <a href=searchpatent.jsp?query=methodic&searchby=Title+%2F+Name&ext=none > methodic</a> | <a href=searchpatent.jsp?query=methomyl&searchby=Title+%2F+Name&ext=none > methomyl</a> | <a href=searchpatent.jsp?query=methodics&searchby=Title+%2F+Name&ext=none > methodics</a> | <a href=searchpatent.jsp?query=methodios&searchby=Title+%2F+Name&ext=none > methodios</a> | <a href=searchpatent.jsp?query=methodise&searchby=Title+%2F+Name&ext=none > methodise</a> | </div>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Body tag [where the output have to be come]
<body>
<h1>hello</h1>
<div id="templatemo_body_wrapper">
<div id="templatemo_wrapper">
Code of SimpleSuggestionService class[who's function generates output] :
package patent;
import java.io.DataInputStream;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.search.spell.JaroWinklerDistance;
import org.apache.lucene.search.spell.LevensteinDistance;
import org.apache.lucene.search.spell.NGramDistance;
import org.apache.lucene.search.spell.PlainTextDictionary;
import org.apache.lucene.search.spell.SpellChecker;
import org.apache.lucene.search.spell.StringDistance;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.Version;
public class SimpleSuggestionService {
public SimpleSuggestionService ()
{
}
public void Suggest (PrintWriter out,String st, String index,String fl) throws IOException {
Scanner in = new Scanner (new DataInputStream(System.in));
File dir = new File(index);
// Directory directory = new RAMDirectory();
Directory directory = FSDirectory.open(dir);
StringDistance sd = new JaroWinklerDistance ();
StringDistance sd2 = new LevensteinDistance ();
StringDistance sd3 = new NGramDistance ();
System.out.println("Enter Word: ");
String w= st;
out.print("<div style=\"height: 180px; overflow: auto; position: absolute; top: 622px; left: 333px; z-index: 10; width: 476px;\" > ");
out.println("Did you mean:<br>");
checkspell( directory , sd, w,out,fl);
checkspell(directory , sd2,w ,out ,fl);
checkspell(directory , sd3 ,w,out,fl);
out.println("</div>");
}
public static void checkspell(Directory dir , StringDistance sd,String wrd,PrintWriter out,String fl) throws IOException {
SpellChecker spellChecker = new SpellChecker(dir);
spellChecker.setStringDistance(sd);
long startTime = System.currentTimeMillis();
spellChecker.indexDictionary(
new PlainTextDictionary(new File(fl) ), new IndexWriterConfig(Version.LUCENE_46, new StandardAnalyzer(Version.LUCENE_46)).setOpenMode(OpenMode.CREATE_OR_APPEND),false );
long endTime = System.currentTimeMillis();
System.out.println("Total indexing time: " + (endTime - startTime) );
String wordForSuggestions = wrd;
int suggestionsNumber = 10;
System.out.println("\n"+spellChecker.getStringDistance().toString());
startTime = System.currentTimeMillis();
String[] suggestions = spellChecker.suggestSimilar(wordForSuggestions, suggestionsNumber);
endTime = System.currentTimeMillis();
System.out.println("Total searching time: " + (endTime - startTime) );
if (suggestions!=null && suggestions.length>0) {
for (String word : suggestions) {
out.print("<a href=searchpatent.jsp?query="+word+"&searchby=Title+%2F+Name&ext=none > "+word+"</a> | ");
System.out.println(word+"<br>");
}
System.out.println();
}
else {
System.out.println("No suggestions found for word:"+wordForSuggestions+"\n");
}
}
}
Why this error happening ?
I am using Tomcat 7.0.27 in windows 7 using Java 7 .
Upvotes: 0
Views: 127
Reputation: 1831
You're using out
on the hello line and response.getWriter()
on the previous line. Without digging into this more, I'm wondering if it's returning another PrintStream
object when you call getWriter
. Try passing out so that you guarantee it's using the same object to write to the response stream.
That is, change this line:
smp.Suggest(response.getWriter(), query2,config.getServletContext().getRealPath("/")+"WEB-INF/wordlist/spin/",config.getServletContext().getRealPath("/")+"WEB-INF/wordlist/whole_2_2.txt");
to this:
smp.Suggest(out, query2,config.getServletContext().getRealPath("/")+"WEB-INF/wordlist/spin/",config.getServletContext().getRealPath("/")+"WEB-INF/wordlist/whole_2_2.txt");
Upvotes: 1