我是新注释的控制器,我有一个问题。我听说可以使用它们在表单之间导航,但是无法实现。
很可能我可以使用SWF但是对于整个项目控制器更合适。
我的控制器看起来像这样:
@Controller
public class AnDBChooseController {
@RequestMapping("/dbchoose")
public ModelAndView choose(@ModelAttribute("db") ComponentDB db){
ModelAndView mv=new ModelAndView();
switch(db.getDbAction()){
case 1: // dodanie komponentu
if (db.getDbType().equals(ComponentDB.DB_CAPACITOR)){
mv.addObject("capacitor",new Capacitor());
mv.setViewName("addcapacitor");
}else if (db.getDbType().equals(ComponentDB.DB_RESISTOR)){
mv.setViewName("addresistor");
}
break;
case 2: // future
break;
case 3: // future
break;
default: // future
break;
}
return mv;
}
}
此控制器应该将我发送到addcapacitor.jsp
Secound控制器(巫婆永不开始)
@Controller
public class AnAddCapacitorController {
ComponentParamTypeService paramService;
@ModelAttribute("subclass")
public ArrayList<ComponentParamType> getSubclasses(){
System.out.println("I am here :]");
return paramService.getParamsForType(ComponentParamType.SUBCLASS_CAPACITOR);
}
@RequestMapping("/addcapacitor")
public String add(@RequestParam("capacitor")Capacitor capacitor){
return "addcapacitordetails";
}
public ComponentParamTypeService getParamService() {
return paramService;
}
public void setParamService(ComponentParamTypeService paramService) {
this.paramService = paramService;
}
}
当然“我在这里:]”从未在控制台上显示:(
应如何更改,以便重定向到addcapacitor whitout丢失模型参数?
答案 0 :(得分:1)
您可以让方法返回String而不是ModelAndView。然后转向行动。
@RequestMapping("/dbchoose")
public String choose(@ModelAttribute("db") ComponentDB db, Model model){
switch(db.getDbAction()){
case 1: // dodanie komponentu
if (db.getDbType().equals(ComponentDB.DB_CAPACITOR)){
mv.addAttribute("capacitor",new Capacitor());
return "forward:/addcapacitor";
}else if (db.getDbType().equals(ComponentDB.DB_RESISTOR)){
return "forward:/addresistor";
}
break;
case 2: // future
break;
case 3: // future
break;
default: // future
break;
}
}