Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将数据对象转换为具有相同格式的不同视图的视图对象_Java_Model View Controller - Fatal编程技术网

Java 将数据对象转换为具有相同格式的不同视图的视图对象

Java 将数据对象转换为具有相同格式的不同视图的视图对象,java,model-view-controller,Java,Model View Controller,我正在开发一个web应用程序,它从不同的来源(web服务、EJB等)收集数据,并在浏览器和PDF中显示它们 目前,我调用所有外部服务并创建自己的POJO。基本上,我将外部对象转换为我自己的表示(并且只获取我需要的属性) 然后,必须为web视图(浏览器)和PDF格式化数据。例如,一些文本必须“缩写”,这意味着它们必须被删去并添加省略号(…)。web(HTML)和PDF的格式必须相同 我现在的问题是我应该把格式化逻辑放在哪里 如果我向保存格式化文本的POJO中添加视图特定属性,我会将视图逻辑与数据

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

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

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

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

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

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

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

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

我是否应该创建一个CustomerView,它具有属性“name”,并且只包含一个长度为5个字符的子字符串

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

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

是否有默认方法来处理这种情况?


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

您知道
MVC
有三个字母吗?同时知道
M
V
的代码属于
C