在这种情况下混合java代码和html / css是不可避免的吗?

时间:2010-09-22 11:15:37

标签: design-patterns

我有一个应用程序。显示与这些对象相关的对象和标签(不是一个非常原始的应用程序)。一个区别是标签有“类型”。大多数都有简单的 type = object ,但其他人有 type = file 。根据标签,它们将具有不同的渲染。例如,单击对象标记会显示其他匹配的对象,但在文件标记上,您可以获取其他匹配的文件,或单击下载链接下载文件。

我可以做两件事:

从JSP调用一个方法(在主应用程序中)呈现所提供的数据(包括标记的文本,其URL等)并返回一个html字符串。因此,如果只提供`object_id`和`object_name`,则此方法签名将导致调用_object渲染器_但如果提供了`file_id`,`file_name`和`file_location`,则方法签名将导致_file渲染器_被调用的方法。然而,这些方法必然包含/了解要呈现的html(混合代码/ html),这是不理想的。

或者我可以在jsp中使用一些if语句来确定返回的数据类型,然后相应地显示相应的HTML。

我更喜欢第一个选项,因为Java至少会发生更多的事情,所以我可以轻松地对更多东西进行单元测试,但是有一种方法可以不需要混合代码和html(同时仍然使用vanilla servlet而不是一些新的框架)。

1 个答案:

答案 0 :(得分:3)

简答:使用jsp自定义标签。创建自己的taglib来解决这些问题。 IMO Custom标签接近于JSP世界中的模型类比