这是我获取staff
列表的方法。
public class StaffController {
private static final Logger logger = LoggerFactory.getLogger(StaffController.class);
@Inject
private StaffService service;
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String listAll(@Param("branchId") Integer branchId,
@Param("page") Integer page,
@Param("rowsPerPage") Integer rowsPerPage,
Model model,
HttpServletRequest request) throws Exception {
logger.info("Staff information list page.");
model.addAttribute("context", request.getContextPath());
Map<String, Object> keys = new HashMap<String, Object>();
keys.put("branchId", branchId);
keys.put("page", page);
keys.put("rowsPerPage", rowsPerPage);
//List<StaffVO> list = service.listAll(1, 1, 10);
List<StaffVO> list = service.listAll(keys);
model.addAttribute("list", list);
return "/staff/list";
}
}
然后在JSP中,我得到如下结果:
<% List<StaffVO> list = (List<StaffVO>)request.getAttribute("list"); %>
好的,太好了。
但在地球上我应该传递branchId
,page
和rowsPerPage
等参数。这样控制器就可以准确地查询我想要的内容。
目前,我只是忽略参数,只是查询所有内容,因为branchId
,page
,rowsPerPage
都是空的。
这是我的StaffMapper:
public interface StaffMapper {
final String SELECT_STAFF =
"SELECT staff.id, staff_level, staff.name, cell, date_join, employment, status, allow_absence_control, branch.id as branch_id, branch.name as branch_name " +
"FROM staff " +
"LEFT JOIN branch " +
"ON staff.branch_id=branch.id " +
"WHERE branch.id=1";
@Select(SELECT_STAFF)
public List<StaffVO> listAll(Map<String, Object> keys) throws Exception;
}
所以,假设现在我有keys
实际上有键和值。那么,如何将该信息插入SELECT字符串?
我尝试了WHERE branch.id = #{keys[branchId]}
等等,但遗憾的是没有用。
答案 0 :(得分:0)
如果我理解你的错误,你需要在你的控制器中获取数据。您可以通过两种方式实现这一目标:
1)@PathVariable
@RequestMapping("/foo/{bar}/{bazz}")
public String getEvent(@PathVariable Long bar,@PathVariable String bazz) {
model.addAttribute(...);
return model;
}
网址示例:
主机名:端口/富/ 2 /你好
主机名:端口/富/ 3 /再见
最后两个变量将被视为路径变量,可以在控制器中使用。
2)@RequestParam
@RequestMapping(value = "/balance", method = RequestMethod.POST)
public String addBalance( @RequestParam Double bar){
...
}
在这里你需要使用html表格,例如
<form name="foo" action="/balance" method="post">
Add money:
<input type="number" name="bar" /></br>
<input type="submit" value="Save" />
</form>
这将把变量放在&lt;输入&GT;请求参数。输入和控制器中的名称应该相同。
P.S。 scriptlet不是在JSP中获取数据的最佳方式。我认为将HTML和JAVA混合起来很糟糕。你应该考虑使用JSTL。