【发布时间】:2015-03-27 13:10:51
【问题描述】:
我正在尝试通过从文件中读取文本来进行自动完成。它在波动中运行良好。我想在服务器上运行它。已经使用了 Html 标记和 servlets 它的工作,但是当我按 enter 后输入查询时,它向我显示匹配列表 如果我使用线程或任何 Html 标签进行自动完成,我怎样才能让它自动完成。我对编码没有太多了解。请帮助我 这是我的 servlet 代码
NewServlet.java
public class NewServlet extends HttpServlet {
public NewServlet() {
}
String json;
ArrayList<String> match = new ArrayList<String>();
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
// response.setContentType("application/json");
AutoTest1 t = new AutoTest1();
ArrayList<String> words = new ArrayList<>();
Trie suggestions = new Trie();
String fileName = "C:/Users/USER/Documents/NetBeansProjects/HelloWorld/web/WEB-INF/aol.txt";
words = t.readWordsFromFile(fileName);
Trie trie = new Trie();
for (String word : words) {
trie.insert(word);
}
suggestions = trie;
try (PrintWriter out = response.getWriter()) {
Gson gson = new Gson();
String prefix = request.getParameter("term");
ArrayList<String> matchingSuggestions = suggestions.getAllPrefixMatches(prefix);
//final List<AutoCompleteData> result = new ArrayList<AutoCompleteData>();
for (String suggestion : matchingSuggestions) {
json = gson.toJson(suggestion);
// result.add(new AutoCompleteData(suggestion,suggestion));
}
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
// response.getWriter().write("<option>"+new Gson().toJson(result)+"<option>"); // Write response body.
response.getWriter().write(json);
}
}
}
自动完成.jsp
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<script type="text/javascript" src="js/jquery.autocomplete.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$(function() {
$("#search").autocomplete({
source : function(request, response) {
$.ajax({
url : "NewServlet",
type : "GET",
data : {
term : request.term
},
dataType : "json",
success : function(data) {
response(data);
}
});
}
});
});
});
</script>
</head>
<body>
<div class="search-container">
<div class="ui-widget">
<input type="text" id="search" name="search" class="search" />
</div>
</div>
</body>
</html>
【问题讨论】:
-
最好使用 JSP,然后在按键上触发一些 Ajax 调用以获取建议,而不是每次都提交表单。您可以在 JSP 和 JavaScript 中编写所有 HTML 代码来绑定一些事件处理程序来触发调用。
-
你不必从你的jsp调用java类和方法,你的表单有一些动作
NewServlet,所以做一个表单提交将来到同一个servlet或者你可以配置一个不同的url 去不同的一个。你在println()转义引号中编写你的html代码,而不是费力地在你的jsp中编写你的html,然后使用你的servlet将控制权转发给那个jsp :) -
是的,我可以编写单独的 html 并在请求后转到 servlet。只是为了显示我包含在 println() 中的 1 块代码。如果我使用用于自动完成的 datalist 标签,我如何将列表放入 datalist 的选项中。
-
现在我们正在谈论.. 我想向你建议 datalist :-).. 配置另一个 servlet 并在文本框中按下按键触发 ajax 调用以获取选项标签并替换数据列表内部 html..
-
您能否提供有关此链接或任何链接或教程的示例代码。
标签: java html servlets autocomplete