扩展struts 2“property”数据标记

时间:2010-04-13 23:54:40

标签: java struts2 javabeans

我们目前正在开发一个使用Struts2的项目。我们有一个模块,我们通过“属性”Struts 2数据标签(即< s:property value =“aBeanProperty”/>)在一组bean上显示大量只读字段的数据jsp文件。在某些情况下,大多数字段可能都是空的,因此屏幕上会显示空白。

我们的客户现在要求我们在属性为空时显示默认字符串(即“N / A”),以便显示它代替当前显示的空白区域。

我们正在寻找一种以清洁和可维护的方式实现这一目标的方法。 'property'标签带有'default'属性,当被访问的属性为null时,可以在该属性上定义默认值。但是,我们的大多数属性都是空字符串,因此在我们的情况下它不起作用。

我们想到的另一个解决方案是为所有bean定义一个基类,并定义一个util方法,该方法将验证字符串是null还是空,然后返回默认值。然后我们将从每个bean getter调用此方法。是的,这将是令人厌倦的,有点丑陋:),因此我们坚持在这个更好的解决方案。

现在,我们想到了一个我们认为最好的解决方案,但是如何实现它却没有运气。我们计划以某种方式扩展'property'标签,定义一个新的'default'属性,这样除了处理null属性外,它还会对空字符串(“”,“”等)执行此操作。因此,我们只需要使用新的自定义标记替换原始的s:property标记,即可在不触及Java代码的情况下实现所需的结果。

您对如何做到这一点有所了解吗?另外,关于如何默认大量属性bean的值的任何其他聪明的解决方案(可能是某种设计模式?)也是受欢迎的!

(或许,甚至可能有一些标签在Struts2中已经这样做了?)

提前致谢。


如果您不想阅读以上所有内容,请使用较短的版本! :)

目前,Struts2提供了一个属性标记(< s:property value =“someValue”/>),它用于显示值的内容,例如: Action类的String变量。此标记包含一个名为“default”的属性,您可以在其中定义要在变量设置为NULL时显示的默认值,例如您可以将其设置为显示这些值的“N / D”。

我们现在需要做同样的事情,但它也适用于空字符串(“”,“”等),不仅适用于空值。我们计划扩展此标记,以便我们拥有自己的(可能类似于< s:propertyEmpty value =“someValue”/>)并完成此行为。你能指导一下如何做到这一点吗?

非常感谢您的帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

有趣。我相信你走在正确的轨道上。

只有我会尝试扩展/修改属性标记,以便在jsp代码中显式设置新行为。我的意思是,我不希望Web应用程序中的每个都自动获取新行为,因为可能有一些bean属性,我想要原始的struts2行为。 我希望有一个新标签nane(例如:......或更短的东西)或新属性(例如)

也许这会有所帮助:http://bodez.wordpress.com/2009/03/13/customising-struts2-jsp-tags/