0

我正在使用 JSP/Spring MVC 编写一个 Web 应用程序,并且需要根据使用它的客户自定义 UI。我需要隐藏/显示屏幕的某些部分,隐藏显示某些标签及其文本框,还需要根据不同的客户修改标签。目前,我们正在根据登录的客户通过元素和 div 控制 JSP 中的隐藏/显示。例如:

if (customer= "A")

show this

else 

hide this

随着我们添加更多客户,代码变得混乱,JSP 将变得臃肿。我认为的另一种选择是将页面拆分为多个部分并以相同的方式控制这些部分,但最终可能会导致跨 JSP 的代码重复。

例如

if (customer = "A")

jsp:include headerA.jsp

else

jsp:include genericheader.jsp

另一种选择是根据客户端编写不同的 JSP 和路由。

有没有更好的方法来处理这种情况。有人可以建议实施此类解决方案的最佳实践吗?

谢谢。

4

3 回答 3

2

为每个用户选择做什么的 UI 不可能超出您的用户 A 和 B。您需要一个基于角色的身份验证和授权系统。

由于您已经在使用 Spring,我建议您查看 Spring Security 及其基于角色的功能。有一些标签可以帮助你。

另一种看待它的方式是,像这样的基于角色的逻辑不属于标签。我建议把它放在控制器中,让它们为你组装页面。

另一种可能性是 SiteMesh,它允许您创建复合视图。

还有一个:jQuery 是为操作 DOM 而生的。与 CSS 一起使用。

于 2012-10-09T23:25:05.050 回答
0

首先它应该基于角色而不是基于客户,每个客户都会有一定的角色。许多客户可能具有相同的角色和屏幕访问权限和 UI。

基于角色,您可以使用 Spring Secutiry 进行身份验证和授权。

如果您需要根据客户角色使用不同的布局,最好使用一些布局管理器,例如 Tiles、SiteMesh 等。

或使用 portlet 为不同的客户提供不同的登录视图

于 2012-10-11T06:18:05.063 回答
0

您刚刚说如果 A 人从一个商店登录,而 B 人从另一个商店登录。讨厌说出来,但那是一个角色,无论你怎么旋转它,这都与用户授权有关。

就你想如何实现它而言,你可以做很多事情,你可以拦截登录请求并设置一个会话变量,该变量在字符串前面确定正确的视图(即当用户登录时你得到 customerA,vs customerB,因此在呈现视图时,您将检索值并呈现“customerA/index”与“customerB/index”等。

您还可以在控制器中确定该人的角色并呈现适当的视图,尽管这会将您的用户角色与您的控制器逻辑相结合,我认为不建议这样做。

如果这个应用程序将有很多不同的后端,我建议您可以为每个应用程序编写一个新的后端的 portlet,而不是用每个新的商店后端来膨胀您的 Web 应用程序。

这些只是几种方法,希望这会有所帮助。

于 2012-10-11T13:55:23.700 回答