навигация между формами с использованием контроллеров на основе аннотаций - PullRequest
2 голосов
/ 09 августа 2010

Я новичок в аннотированных контроллерах, и у меня проблема. Я слышал, что можно перемещаться между формами, используя их, но не могу этого достичь.

Ну, наверное, я мог бы использовать 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

Контроллер звука (ведьма никогда не запускается)

@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;
 }
}

Конечно, «Я здесь:]» никогда не отображается на консоли: (

Как это изменить, чтобы я был перенаправлен на аддон-конденсатор без потери параметров модели?

1 Ответ

1 голос
/ 10 августа 2010

Вы можете иметь методы, возвращающие 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;

  }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...