Это веб-сайт онлайн-библиотеки, который я пытаюсь сделать. Для расширенного поиска, который может принимать несколько входов, я начинаю с массива всех публикаций, затем удаляю элементы, которые не соответствуют пользовательскому вводу. Это отлично работает в первый раз, когда массив сокращается до нужного массива. Поэтому, если кто-то набрал «программирование», будут показаны все публикации, имеющие программирование в их названии. Теперь, если пользователь снова нажимает кнопку «Предварительный поиск» на NavBar (как показано на приветствии.jsp), а входы говорят «UML», мой код выполнит поиск UML в сокращенном массиве, который содержит результаты только для «программирования» ». Я поставил оператор печати вышеJSP не повторное создание
SearchResult sr = new SearchResult(); sr.searchContains = publications;
(В контрольном сервлете) и печатает как для входов UML и программирования, но это, кажется, либо не создавать новый массив со всеми публикациями?
searchResult.jsp:
<c:forEach var="current" items="${sr.searchContains}"> Title: ${current.title} </c:forEach>
ControllerServlet.java:
if (action.equals("advSearch")) {
SearchResult sr = new SearchResult();
sr.searchContains = publications;
nextPage = "searchResult.jsp";
String titleString = request.getParameter("titleString");
if (!titleString.equals("")){
ArrayList<Publication> toRemove = new ArrayList<Publication>();
for (Publication p : sr.searchContains){
if (!p.title.contains(titleString)){
toRemove.add(p);
}
}
sr.searchContains.removeAll(toRemove);
}
request.getSession().setAttribute("sr", sr);
RequestDispatcher rd = request.getRequestDispatcher("/"+searchResult.jsp);
rd.forward(request, response);
welcome.jsp:
<ul class="nav navbar-nav">
<li class="active"><a href="advancedSearch.jsp">Advance Search <span class="sr-only">(current)</span></a></li>
</ul>
advancedSearch.jsp:
<form action="controller" method="POST">
<div class="form-group">
<label for="title">Title:</label>
<input type="text" class="form-control" name="titleString">
<input type="hidden" name="action" value="advSearch" />
</div>
<button type="submit" class="btn btn-default">Advanced Search</button>
</form>
SearchResult.jsp:
public class SearchResult {
public ArrayList<Publication> searchContains = new ArrayList<Publication>();
public ArrayList<Publication> getSearchContains(){
return this.searchContains;
}
}