在GWT应用程序中外部化HTML的最佳方法?

2022-09-02 11:52:54

在 GWT 应用中外部化大量 HTML 的最佳方式是什么?我们有一个相当复杂的GWT应用程序,大约30个“页面”;每个页面的底部都有一个指南,是几段HTML标记。我想将HTML外部化,以便它可以尽可能保持“未转义”。

我知道并理解如何在GWT中使用属性文件;这当然比在Java类中嵌入内容更好,但对于HTML来说仍然有点丑陋(你需要反斜杠所有内容,以及转义引号等)。

通常情况下,这是你会放在JSP中的那种东西,但我在GWT中没有看到任何与之等效的东西。我正在考虑编写一个小部件,该小部件将简单地从服务器上的html文件中提取内容,然后将文本添加到HTML小部件中。但似乎应该有一种更简单的方法。


答案 1

我在类似的设置中使用了 ClientBundle。我已经创建了一个包my.resources,并将我的HTML文档和以下类放在那里:

package my.resources;

import com.google.gwt.core.client.GWT;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.TextResource;

public interface MyHtmlResources extends ClientBundle {
 public static final MyHtmlResources INSTANCE = GWT.create(MyHtmlResources.class);

 @Source("intro.html")
 public TextResource getIntroHtml();

}

然后,我通过从我的GWT客户端代码中调用以下内容来获取该文件的内容:

HTML htmlPanel = new HTML();
String html = MyHtmlResources.INSTANCE.getIntroHtml().getText();
htmlPanel.setHTML(html);

有关详细信息,请参阅 http://code.google.com/webtoolkit/doc/latest/DevGuideClientBundle.html


答案 2

您可以使用一些模板化机制。尝试免费标记速度模板。您将在文件中拥有 HTML,这些文件将由模板库检索。这些文件可以用适当的扩展名命名,例如.html,.css,.js本身就可以理解。