बढ़ाता है मैं वसंत 2.5 का उपयोग कर रहा हूं, और अपने नियंत्रकों को कॉन्फ़िगर करने के लिए एनोटेशन का उपयोग कर रहा हूं। यदि मैं किसी भी अतिरिक्त इंटरफेस को लागू नहीं करता हूं तो मेरा नियंत्रक ठीक काम करता है, लेकिन जब मैं इंटरफ़ेस कार्यान्वयन जोड़ता हूं तो बसंत कंटेनर नियंत्रक/अनुरोध मैपिंग को नहीं पहचानता है।एनोटेटेड स्प्रिंग-एमवीसी नियंत्रक को मान्यता नहीं दी जाती है जब नियंत्रक इंटरफेस
मैं यह नहीं समझ सकता कि एक इंटरफेस कार्यान्वयन क्यों नियंत्रक की कॉन्फ़िगरेशन और अनुरोध मैपिंग को जोड़ता है। कोई विचार?
तो, यह काम करता है:
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;
}
}
लेकिन यह नहीं करता है:
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;
}
}
मैं चाहिए जोड़ें कि नियंत्रक मेरे वसंत संदर्भ कॉन्फ़िगरेशन में निम्न के साथ पंजीकृत हैं: <संदर्भ: घटक-स्कैन बेस-पैकेज = "com.shaneleopard.web" /> और डिफ़ॉल्टअनोटेशन हैंडलर मैपिंग और एनोटेशन मोडरहा ndlerAdapter – layne
ऐसा लगता है कि आप ValidatingController आयात कर रहे हैं - पूरी तरह योग्य क्लास नाम क्या है? –
मैं इसे आयात कर रहा हूं। यह उपरोक्त नियंत्रक उदाहरण के समान पैकेज में है। जब मैं ValidatingController बेस क्लास का विस्तार करता हूं, तो मुझे उपरोक्त कोड कार्य जोड़ना चाहिए, लेकिन जब मैं एक इंटरफ़ेस के रूप में ValidatingController को कोड करता हूं और पंजीकरण नियंत्रक इसे कार्यान्वित करता है, तो यह टूट जाता है। – layne