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クラスを実装する際に問題が発生します。利用可能な解決策はありますか?
私は次のように解決策を見つけました:
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>
gitHubでSpringMVCルータープロジェクトを確認してください。
https://github.com/resthub/springmvc-router
これは、SpringMVC用の劇のルートファイルの実装です。