web-dev-qa-db-ja.com

SpringMVCを使用したアプリケーションルート

WebAppでルートの使用を管理する方法を探しています。基本的に、ルーターパターンを共有できる場所は3つあります。そして、表現言語を介して、このパターンを自分のビューで使用するために送信することができました。

@Controller
public class LoginRuasController
{
    @RequestMapping("/system/index")
    public String logout(ModelMap model, HttpSession session)
    {
        return "system/index";
    }   

    @RequestMapping("/system/logout")
    public String logout(ModelMap model, HttpSession session)
    {
        session.setAttribute("xxx", null);
        return "redirect:/system/login";
    }
}

パターン:

/system/index
system/index
redirect:/system/login

ビュー:

<a href="#{Routes.newuser}">Triple X</a>

最初に、RequestMappingは定数値を要求するため、静的リターンを使用してRouteクラスを実装する際に問題が発生します。利用可能な解決策はありますか?

11
claudioivp

私は次のように解決策を見つけました:

1)Routesクラスを作成します

public class Routes {

    private static HashMap<String, String> routes;

    public static final String Host = "/mywebapp";
    public static final String home = "/home";
    public static final String login = "/login";
    public static final String logout = "/logout";

    private static void setRoutes()
    {       
        if(routes == null)
        {
            routes = new HashMap<String, String>();

            routes.put("Host", Host);
            routes.put("home", Host + home);
            routes.put("entrar", Host + entrar);
            routes.put("sair", Host + sair);
        }
    }   

    public static HashMap<String, String> getRoutes()
    {
        setRoutes();

        return routes;
    }

    public static String getRoute(String destin)
    {
        setRoutes();

        return routes.get(destin);
    }

}

2)コントローラーで使用しています... RequestMappingを設定できるようになりました

@Controller
public class HomeController extends AbstractController {

    @RequestMapping(Routes.home)
    public String home(ModelMap model)
    {
        preRender(model);       
        return Routes.home;
    }

}

3)ビューで使用するルートを設定しました

public abstract class AbstractController {

    protected void preRender(ModelMap model) {
        model.addAttribute("routes", Routes.getRoutes()); 
    }

}

4)そしてそれはビューで使用できるようになりました

<body>
    <p>Mary is singing.</p>
    <p><a href="${routes.home}">Home</a></p>
</body>
9
claudioivp

gitHubでSpringMVCルータープロジェクトを確認してください。

https://github.com/resthub/springmvc-router

これは、SpringMVC用の劇のルートファイルの実装です。

8
nyl66