2016-12-11 1 views
0

Я только начинаю изучать Java, и это мой первый вопрос на переполнение стека, поэтому, пожалуйста, не судите меня слишком строго)Java Spring 4,01 автоматическое отображение

Я использую Netbeans 8,02, GlassFish 4.0, JavaEE7, весна 4,01. (Нет Maven. Без спящего режима.) (Новый проект-> Веб-приложение Java)

Я создал «исходные пакеты/XController.java» и для URL-адреса localhost: 8080/MyProject/x/y. HTM я получил эту работу:

@Controller 
public class XController { 
    @RequestMapping("/x/y.htm") 
    public String yAction(ModelMap modelMap) { 
     modelMap.put("printme", "Hello World!"); 
     return "x/y"; 
    } 
} 

можно ли избавиться от аннотаций, так как все они будут иметь то же самое правило: если URL является http://localhost:8080/MyProject/a/b он будет автоматически использовать AController.BAction() и автоматически устанавливается вид будет WEB-INF/jsp/a/b.jsp?

идеально код действия будет выглядеть примерно так:

public Void yAction() { 
    this.modelMap.put("printme", "Hello World!"); 
} 

и если URL будет http://localhost:8080/MyProject/a/b/hello соответствующий метод будет выглядеть следующим образом:

public Void yAction(String msg) { 
    this.modelMap.put("printme", msg); 
} 

Если контроллер или действие, или просмотреть не найдены , или действие имеет неправильные аргументы, а затем просто исключение, дальнейшее разрешение не требуется.

Итак, вопрос в том, что это правильный способ достичь этого, используя современные функции Spring, но если это невозможно, то с простой Java?

Это можно сделать вручную, например, перенаправлять все тот же адрес, а затем разобрать URL, и запустить соответствующий Controller.Method(), но это не будет выглядеть хорошо)

ответ

0

Что вы ищете @PathVariable :

@RequestMapping("/{var1}/{var2}") 
    public String action1(ModelMap modelMap, @PathVariable String var1, @PathVariable String var2, @PathVariable String var3) { 
     modelMap.put("printme", "Hello World!"); 
     return var1+"/"+var2; 
} 

@RequestMapping("/{var1}/{var2}/{var3}") 
    public String action2(ModelMap modelMap, @PathVariable String var1, @PathVariable String var2, @PathVariable String var3) { 
     modelMap.put("printme", var3); 
     return var1+"/"+var2; 
} 
Смежные вопросы