在我的全局模板中,我有菜单。
在此菜单中,我输入了select
客户实体列表。
每个页面都有此菜单。
如何将该客户列表应用于全局模板用法(列表将被缓存)。
请帮忙。
---- ----- EDIT
这是我的整个主控制器:
package com.derp.common.controller;
import java.util.List;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.derp.common.dao.CustomerDao;
import com.derp.common.dao.UserDao;
import com.derp.common.model.Customer;
import com.derp.common.model.User;
import com.derp.generic.controller.GenericController;
@Controller
public class IndexController extends GenericController {
@Autowired private CustomerDao customerDao;
@Transactional
@RequestMapping(value="/", method=RequestMethod.GET)
public ModelAndView mainPage(HttpSession session) {
ModelAndView result = new ModelAndView("home");
result.addObject("title", "Strona główna");
System.out.println(session.getAttribute("customersList"));
session.setAttribute("customersList", customerDao.get());
return result;
}
@Transactional
@RequestMapping(value="/index", method=RequestMethod.GET)
public String mainPage2(HttpSession session) {
return "redirect:/";
}
@RequestMapping(value="/o_systemie", method=RequestMethod.GET)
public ModelAndView aboutSystem(HttpSession session) {
ModelAndView result = new ModelAndView("aboutSystem");
result.addObject("title", "O programie");
return result;
}
@RequestMapping(value="/test", method=RequestMethod.GET)
public ModelAndView testSystem(HttpSession session) {
ModelAndView result = new ModelAndView("test");
result.addObject("title", "Test");
return result;
}
@ModelAttribute("customers")
public List<Customers> populateCustomers() {
return customerDao.get();
}
}
每个控制器方法生成自定义视图(f.e. test.html)并将其注入主视图模板(即template.html)
在这一行:
session.setAttribute("customersList", customerDao.get());
是我希望在template.html
答案 0 :(得分:1)
您还可以使用ControllerAdvice和包含控制器(类)的包名称的变量使其更通用:
@ControllerAdvice("your.package.controllers")
class Advice {
@Autowired
CustomerService customerService;
@ModelAttribute("customers")
public List<Customers> populateCustomers() {
return customerService.findAll();
}
}
答案 1 :(得分:0)
您可以在方法上使用@ModelAttribute,例如:
@ModelAttribute("customers")
public List<Customers> populateCustomers() {
return this.customerService.findAll();
}
此方法用于与客户一起填充模型。然后你可以访问例如customers.size等...在您的模板中。