我创建了一个搜索查询来过滤数据库中的记录。每当我输入我要过滤的值,例如将电子邮件作为标准进行过滤并单击搜索,它将从数据库中检索记录,如果我再次单击搜索而不是添加新的搜索结果,则会使用新记录重新填充列表并保持旧的记录。
editted
这是adminList初始化
List<Admin> adminList = new ArrayList<Admin>();
这是我用来搜索的查询
@SuppressWarnings("unchecked")
public List<Admin> getAllAdmins(String singleAdmin) {
try{
String query = "SELECT DISTINCT e.* FROM admin e WHERE e.email like '%"+ singleAdmin +"%'";
List<Object[]> adminObjects = fetchAll(query);
for(Object[] adminObject: adminObjects) {
Admin adminIndividual = new Admin();
Integer id = ((Integer) adminObject[0]);
String email = (String) adminObject[1];
String name = (String) adminObject[2];
adminIndividual.setId(id);
adminIndividual.setEmail(email);
adminIndividual.setName(name);
adminList.add(adminIndividual);
}
System.out.println("database values for admin>>>>> "+adminList);
return adminList;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
这是我的.jsp文件中的代码片段,用于将数据发送到控制器以搜索查询条件
<form method="post" action="searchAdmin">
<p><label for="name">Admin Email</label>
<input class="form-control" type='text' name='searchName' id='searchName'/>
<input class="btn btn-success" type='submit' value='RETRIEVE'/>
</p>
这就是我填充每当进行新搜索时获取值的列表的方式
<c:forEach items="${adminList}" var="admin">
<p>
<label for="name">FULLNAME</label>
<input type="text" name="name" placeholder="" value="${admin.name}" readonly/>
</p>
<p>
<label for="email">Email</label>
<input type="text" name="email" placeholder="" value="${admin.email}" readonly/>
</p>
</c:forEach>
你可以看到全名重复两次,如果我再次输入一封电子邮件来点击搜索,它会将两个保留两个以前的记录加倍。请在尝试搜索时如何解决此问题,因为页面刷新让填充搜索查询而不重复上一个搜索查询。请帮助!