#java #spring #spring-mvc #generics
#java #весна #spring-mvc #общие
Вопрос:
В моем приложении spring у меня есть один общий класс контроллера, который служит базовым классом для нескольких других контроллеров в моем приложении. Эти производные контроллеры имеют такую структуру:
@Controller
@RequestMapping(value="usuario")
public class UsuarioController extends controller<Usuario> {
public UsuarioController() {
super(Usuario.class);
}
}
У меня будет один из них для каждого класса сущностей из моего приложения. В общем контроллере у меня есть два метода для каждого действия (т. е.: вставка, обновление, удаление, выбор). эти два метода (и универсальный контроллер) имеют такую форму:
public class controller<E> {
@Autowired
private service<E> serv;
private final Class<E> entityClass;
@RequestMapping(value="cadastra")
@PreAuthorize("hasPermission(#user, 'cadastra_' #this.this.name)")
public ModelAndView cadastra() throws InstantiationException, IllegalAccessException {
return new ModelAndView("privado/" this.entityClass.getName() "/cadastra", "command", this.entityClass.newInstance());
}
@RequestMapping(value="cadastra", method=RequestMethod.POST)
@ResponseBody
public String cadastra(@ModelAttribute("object") E object, BindingResult result) {
if(serv.cadastra(object))
return "yes";
else
return "not";
}
}
Проблема в том, что когда я запускаю приложение и пытаюсь получить доступ к представлению, отображенному этим методом, я получаю ошибку 404.
Кто-нибудь может сказать, что я здесь делаю не так?
Комментарии:
1. Пожалуйста, покажите пример конкретного представления, которое у вас есть. Также опубликуйте свою конфигурацию Spring MVC
2. @geoи моя весенняя конфигурация: github.com/klebermo/blog.cms/tree/master/src/main/java/com /. …
3. Почему бы вам не обновить свой вопрос, чтобы каждый мог легко увидеть конфигурацию?
4. @geoand я сохраняю свои взгляды здесь: github.com/klebermo/blog.cms/tree/master/src/main/webapp /… (представление, к которому я пытаюсь получить доступ и которое отображается контроллером выше, — privado/Usuario/).
5. извините, я думал, что это более простой способ, поскольку моя конфигурация размещена в нескольких классах.
Ответ №1:
Проблема в том, что Spring не может найти правильный JSP для пересылки обработки. После просмотра вашего кода кажется, что вам нужно изменить this.entityClass.getName()
с this.getName()