动态面包屑生成-怎么办?

时间:2020-03-06 15:00:40  来源:igfitidea点击:

我正处于使用Spring + Tiles开发新品牌的早期阶段。该站点需要动态生成的面包屑。

我所说的动态是指用户可以从多个起点到达某个站点。如果我有关于"客户","订单"和"产品"的视图,则用户可以直接访问产品:

Products -> Product xyz

否则用户可以通过客户的订单获取产品:

Customers -> John Doe -> Orders -> Order 123 -> Product xyz

在Java环境中实现像这样的面包屑的最佳方法是什么?之前,我是通过使用请求属性(Url对象的Vector)来完成此操作的,该属性在我的Web应用程序的每个操作/ Servlet中都填充了Urls(例如在Actions of Products中)。我对此解决方案不满意,因为它需要向每个控制器/操作添加代码以生成面包屑跟踪。并且在类似查看给定客户给定订单产品的情况下,确定路径所需的"如果-则-否则"逻辑是糟糕的。

我可以使用任何库吗?

解决方案

我们为什么不只使用存储跟踪的会话变量?每个视图只需要将自身添加到变量上,或者在使用" root"视图的情况下只需重置变量即可。添加它的代码和显示它的代码将始终是相同的,并且可以在通用库中使用,在存储路径的情况下,只需用一个标志对其进行调用即可添加或者重置该值。

Struts2有一个面包屑插件。