如何在java web应用程序中没有提交按钮的情况下创建一个充当搜索字段的文本字段
问题描述:
我在spring mvc中编写了一个小型java web应用程序。我有一个网页,列出从MySQL数据库表。如何在java web应用程序中没有提交按钮的情况下创建一个充当搜索字段的文本字段
webpage displaying information from db
现在我想有一个测试盒,其确实在打键盘没有按键输入搜索行动。
其代码如下globalfilter.jsp
clientlist.jsp
<div class="container-fluid">
<div class="row">
<div class="col-sm-3 col-md-2 sidebar">
<ul class="nav nav-sidebar">
<li class="active"><a href="#">Enterprise Applications <span class="sr-only">(current)</span></a></li>
<li><a href="#">Application Servers</a></li>
<li><a href="#">WebServers</a></li>
<li><a href="#">Clusters</a></li>
</ul>
</div>
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
<h1 class="page-header">Clients</h1>
<div class="table-responsive">
<table class="table table-striped">
<tr>
<td><%@ include file="/WEB-INF/jsp/globalfilter.jsp" %></td>
</tr>
<thead>
<tr>
<th>Application Name</th>
<th>Client Type</th>
<th>Client Name</th>
<th>Hostname</th>
<th>Environment</th>
</tr>
</thead>
<tbody>
<c:forEach items="${clientList}" var="client">
<tr>
<td>${client.applicationname}</td>
<td>${client.clienttype}</td>
<td>${client.clientname}</td>
<td>${client.hostname}</td>
<td>${client.envtype}</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
</div>
</div>
它有搜索表
<body>
<form:form action="client.do" method="POST" commandName="client">
<table>
<tr>
<td><input type="text" name="clientname" /></td>
<td colspan="2">
<input type="submit" name="action" value="Search" />
</td>
</tr>
</table>
</form:form>
</body>
ClientController.java
@RequestMapping("/clientlist")
public String clientPage(Map<String, Object> map){
Client client = new Client();
map.put("client", client);
map.put("clientList", clientService.getAllClient());
return "clientlist";
}
@RequestMapping(value="/client.do", method=RequestMethod.POST)
public String doActions(@ModelAttribute Client client, BindingResult result, @RequestParam String action, Map<String, Object> map){
Client clientResult = new Client();
boolean isSearch = false;
switch(action.toLowerCase()){
case "add":
clientService.add(client);
clientResult = client;
break;
case "edit":
clientService.edit(client);
clientResult = client;
break;
case "delete":
clientService.delete(client.getClientname());
clientResult = new Client();
break;
case "search":
Client searchedClient = clientService.getClient(client.getClientname());
clientResult = searchedClient!=null ? searchedClient : new Client();
isSearch = true;
break;
}
if(isSearch) {
List<Client> list = new ArrayList<Client>();
list.add(clientResult);
map.put("clientList", list);
} else {
map.put("clientList", clientService.getAllClient());
map.put("client", clientResult);
}
return "clientlist";
}
现在我不需要d一个提交按钮“搜索”哪个动作,如何通过按回车键来实现搜索结果。
答
这实际上与Java没有关系,只有标准的浏览器行为。
只需删除提交按钮。表单默认提交回车。
你可以在这里提供[mcve]。但基本上,您需要在Javascript中添加此行为。 Keylistener发送关于按键的表单,你会在这里找到很多 – AxelH