1

我正在开发一个 Web 应用程序,它从不同来源(Web 服务、EJB 等)收集数据并将它们显示在浏览器和 PDF 中。

目前我调用所有外部服务并创建自己的 POJO。基本上我将外部对象转换为我自己的表示(并且只获取我需要的属性)。

然后必须为 Web 视图(浏览器)和 PDF 格式化数据。例如,某些文本必须“缩写”,这意味着它们必须被截断并添加省略号 (...)。Web (HTML) 和 PDF 的格式必须相同。

我现在的问题是我应该把格式化逻辑放在哪里。

  • 如果我将视图特定属性添加到保存格式化文本的 POJO,我会将视图逻辑与数据混合。如果我以后可能有第三种视图,我需要不同的格式,我必须更多地污染 POJO。

  • 如果我将 POJO 直接发送到视图(web 和 PDF),那么视图必须进行格式化,我可能会在两个地方复制格式化逻辑(例如,一次在 JSP 中实现,一次在 XSLT 中实现)。

我是否应该创建另一个层,将 POJOS 转换/映射到“查看”为视图准备的特定 POJO?

假设我有一个对象 Customer,它包含属性 firstName 和 lastName。该视图仅限于显示 5 个字符,并且始终显示“firstName lastName”(用于 HTML 视图和 PDF)

我是否应该创建一个具有“名称”属性且仅包含 5 个字符长度的子字符串的 CustomerView?

然后我可以有一个 CustomerTransformer,它将 Customer 对象作为输入,CustomerView 对象作为输出。

这会是一个合理的解决方案吗?我该如何称呼这些对象?扩展“视图”是否明确目的?

有没有处理这种情况的默认方法?

感谢您的输入、提示或建议

4

0 回答 0