Я пытаюсь установить общий class для моего проекта. Пока я получаю этот код:
https://github.com/klebermo/blog.cms/blob/master/src/main/java/com/config/generic/controller/GenericController.java
В этот момент я придерживаюсь этого метода:
@RequestMapping(value="cadastra", method=RequestMethod.POST) @ResponseBody public String cadastra(@ModelAttribute("") E object, BindingResult result) { if(service.cadastra(object)) return "yes"; else return "not"; }
параметр для annotations ModelAtribute должен быть именем classа сущности из моего проекта, который я сохранил в classе member_class, но не могу использовать, потому что аннотация принимает только постоянные значения.
Кроме того, у меня есть та же проблема с аннотацией PreAutorize. Я буду использовать эту аннотацию следующим образом:
@PreAuthorize("hasPermission(#user, '<>')") @RequestMapping(value="cadastra") public ModelAndView cadastra() { ModelAndView mav = new ModelAndView(); mav.setViewName("privado/"+this.entity_name+"/cadastra"); return mav; }
и в моих методах от моего общего сервиса тоже. Имя этого разрешения следует этому правилу:
<>_<>
и для каждого classа сущности я буду иметь три разрешения: cadastra (new_item), altera (change_item) и remove (remove_item).
Любой может указать направление, как это решить?
Для первого вопроса @ModelAttribute
, что я понял, у вас есть несколько форм, вызывающих один и тот же метод @ModelAttribute
Mapping, чтобы проверить правильность информации. Я думаю, вы можете использовать параметр формы, чтобы указать, какой class сущности он есть, и использовать оболочку для обертывания всех объектов, которые вызывают этот метод.
создать объект:
@Entity public class Wrapper{ private Entity1 e1; .....
в вашем jsp:
в вашем controllerе:
@RequestParam("classname") String classname;//used to get which entity it's service.cadastra(wrapper.getEntityX())
для второго вопроса я мало знаю о @PreAuthorize annotations.