Tôi đang sử dụng spring 2.5 và đang sử dụng chú thích để định cấu hình bộ điều khiển của mình. Bộ điều khiển của tôi hoạt động tốt nếu tôi không thực hiện bất kỳ giao diện bổ sung nào, nhưng vùng chứa lò xo không nhận ra ánh xạ yêu cầu/bộ điều khiển khi tôi thêm các triển khai giao diện.Bộ điều khiển Spring-MVC được chú thích không được nhận diện khi bộ điều khiển mở rộng giao diện
Tôi không thể hiểu tại sao việc thêm triển khai giao diện làm rối loạn cấu hình của bộ điều khiển và ánh xạ yêu cầu. Bất kỳ ý tưởng?
Vì vậy, hoạt động này:
package com.shaneleopard.web.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.providers.encoding.Md5PasswordEncoder;
import org.springframework.stereotype.Controller;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.shaneleopard.model.User;
import com.shaneleopard.service.UserService;
import com.shaneleopard.validator.RegistrationValidator;
import com.shaneleopard.web.command.RegisterCommand;
@Controller
public class RegistrationController {
@Autowired
private UserService userService;
@Autowired
private Md5PasswordEncoder passwordEncoder;
@Autowired
private RegistrationValidator registrationValidator;
@RequestMapping(method = RequestMethod.GET, value = "/register.html")
public void registerForm(@ModelAttribute RegisterCommand registerCommand) {
// no op
}
@RequestMapping(method = RequestMethod.POST, value = "/register.html")
public String registerNewUser(@ModelAttribute RegisterCommand command,
Errors errors) {
String returnView = "redirect:index.html";
if (errors.hasErrors()) {
returnView = "register";
} else {
User newUser = new User();
newUser.setUsername(command.getUsername());
newUser.setPassword(passwordEncoder.encodePassword(command
.getPassword(), null));
newUser.setEmailAddress(command.getEmailAddress());
newUser.setFirstName(command.getFirstName());
newUser.setLastName(command.getLastName());
userService.registerNewUser(newUser);
}
return returnView;
}
public Validator getValidator() {
return registrationValidator;
}
}
nhưng điều này không:
package com.shaneleopard.web.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.providers.encoding.Md5PasswordEncoder;
import org.springframework.stereotype.Controller;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.shaneleopard.model.User;
import com.shaneleopard.service.UserService;
import com.shaneleopard.validator.RegistrationValidator;
import com.shaneleopard.web.command.RegisterCommand;
@Controller
public class RegistrationController extends ValidatingController {
@Autowired
private UserService userService;
@Autowired
private Md5PasswordEncoder passwordEncoder;
@Autowired
private RegistrationValidator registrationValidator;
@RequestMapping(method = RequestMethod.GET, value = "/register.html")
public void registerForm(@ModelAttribute RegisterCommand registerCommand) {
// no op
}
@RequestMapping(method = RequestMethod.POST, value = "/register.html")
public String registerNewUser(@ModelAttribute RegisterCommand command,
Errors errors) {
String returnView = "redirect:index.html";
if (errors.hasErrors()) {
returnView = "register";
} else {
User newUser = new User();
newUser.setUsername(command.getUsername());
newUser.setPassword(passwordEncoder.encodePassword(command
.getPassword(), null));
newUser.setEmailAddress(command.getEmailAddress());
newUser.setFirstName(command.getFirstName());
newUser.setLastName(command.getLastName());
userService.registerNewUser(newUser);
}
return returnView;
}
public Validator getValidator() {
return registrationValidator;
}
}
tôi nên thêm rằng bộ điều khiển được đăng ký với những điều sau trong cấu hình ngữ cảnh mùa xuân của tôi: và sử dụng DefaultAnnotationHandlerMapping và AnnotationMethodHa ndlerAdapter –
layne
Dường như bạn đang nhập ValidatingController - tên lớp đầy đủ là gì? –
Tôi đang nhập. Đó là trong cùng một gói như ví dụ điều khiển ở trên. Tôi nên thêm mã trên hoạt động khi tôi mở rộng lớp cơ sở ValidatingController, nhưng khi tôi mã ValidatingController như một giao diện và có RegistrationController thực hiện nó, sau đó nó phá vỡ. – layne