私は検索フィルターとページネーションにいくつか問題があります。フィルタはうまく動作しますが、ページングについても同じことは言えません。フィルタパラメータの保持方法。ページ区切り
ユーザーがいるテーブルがあります。私はすべてのユーザーまたはフィルター(名前、電子メール)で表示できます。フィルタを使用して2ページ目に移動しようとすると、フィルタリングを行わずにすべてのユーザーが返されます。なぜそれが起こるのか、私は理解しています。解決策を見つけるのを助けてください。選択したフィルタはどのように保持できますか?セッションで何か? ここに私のコード。
マイコントローラ
@Controller
@RequestMapping(value = "/admin")
public class AdminController {
@Autowired
UserService userService;
@RequestMapping(value = "/edit-user", method = RequestMethod.GET)
public ModelAndView editUsers(@RequestParam(value = "page", defaultValue = "0") Integer page,
@RequestParam(value = "pattern", required = false) String pattern,
@RequestParam(value = "category", required = false) String category) {
ModelAndView view = new ModelAndView("edit-user");
if(pattern == null){
Page<User> userList = userService.findAll(page);
view.addObject("userList", userList.getContent()).addObject("maxPage", userList.getTotalPages());
}else if(category.equals("username")){
Page<User> userList = userService.findByUsernameContaining(pattern, page);
view.addObject("userList", userList.getContent()).addObject("maxPage", userList.getTotalPages());
}else {
Page<User> userList = userService.findByEmailContaining(pattern, page);
view.addObject("userList", userList.getContent()).addObject("maxPage", userList.getTotalPages());
}
return view;
}
}
JSPあなたの場合
<div class="row top-buffer">
<div class="col-md-4 col-md-offset-4">
<form class="form-inline text-center" role="form" method="get" action="/admin/edit-user?pattern=pattern?category=category">
<fieldset>
<!-- Search Name -->
<div class="form-group">
<label class="sr-only" for="item-name">Product Name</label>
<input id="item-name" name="pattern" placeholder="..." class="form-control">
</div>
<!-- Search Category -->
<div class="form-group">
<label class="sr-only" for="item-category">Product Category</label>
<select id="item-category" name="category" class="form-control">
<option value="username" selected>By username</option>
<option value="email">By email</option>
</select>
</div>
<!-- Search Action -->
<div class="form-group">
<button type="submit" class="btn btn-primary"><span
class="glyphicon glyphicon-search" aria-hidden="true"></span></button>
</div>
</fieldset>
</form>
</div>
</div>
<div class="row top-buffer">
<div class="col-md-8 col-md-offset-2">
<table class="table">
<thead>
<th>Id</th>
<th>Username</th>
<th>Email</th>
<th>Password</th>
</thead>
<c:forEach var="user" items="${userList}">
<tr>
<td>${user.id}</td>
<td>${user.username}</td>
<td>${user.email}</td>
<td>${user.password}</td>
<td>
<button type="button" class="btn btn-info btn-sm editButton" data-toggle="modal"
data-target="#myModal" data-id="${user.id}">Edit
</button>
</td>
</tr>
</c:forEach>
</table>
</div>
</div>
<div class="row">
<div class="col-md-4 pull-right">
<ul class="pagination">
<c:forEach begin="0" end="${maxPage - 1}" var="i">
<li><a href="/admin/edit-user?page=${i}">${i+1}</a></li>
</c:forEach>
</ul>
</div>
</div>
ああ、もう1つ質問です。 Mapのように@Requestparamを作成しようとすると、mapは常にnullです。 –