扩展struts 2“属性”数据标记

问题描述:

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

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

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

我们正在考虑的另一个解决方案是为我们所有的bean定义一个基类,并定义一个util方法,它将验证字符串是空还是空,然后返回默认值。然后我们会从每个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”/>)并完成此行为。你能指导如何做到这一点?

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

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

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

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