在GWT应用程序中外部化大量HTML的最佳方法是什么?我们有一个相当复杂的GWT应用程序,大约30"页"; 每个页面底部都有一个指南,它是HTML标记的几个段落.我想外化HTML,以便它可以保持尽可能"未转义".
我知道并了解如何在GWT中使用属性文件 ; 这肯定比在Java类中嵌入内容更好,但对于HTML仍然有点丑陋(你需要反驳所有内容,以及转义引号等)
通常这是你要放在JSP中的那种东西,但我没有看到任何与GWT相同的东西.我正在考虑编写一个小部件,它只是从服务器上的html文件中获取内容,然后将文本添加到HTML小部件中.但似乎应该有一种更简单的方法.
小智 22
我在类似的设置中使用过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();
}
Run Code Online (Sandbox Code Playgroud)
然后我通过从GWT客户端代码中调用以下内容来获取该文件的内容:
HTML htmlPanel = new HTML();
String html = MyHtmlResources.INSTANCE.getIntroHtml().getText();
htmlPanel.setHTML(html);
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅http://code.google.com/webtoolkit/doc/latest/DevGuideClientBundle.html.
您可以使用一些模板机制.试试FreeMarker或Velocity模板.您将在文件中使用HTML,这些文件将由模板库检索.这些文件可以使用适当的扩展名进行命名,例如.html,.css,.js可以单独使用.
我会说你通过Frame加载外部html .
Frame frame = new Frame();
frame.setUrl(GWT.getModuleBase() + getCurrentPageHelp());
add(frame);
Run Code Online (Sandbox Code Playgroud)
您可以为getCurrentPageHelp()安排一些约定或查找以返回适当的路径(例如:/manuals/myPage/help.html)
这是一个框架的例子.
在GWT 2.0中,您可以使用UiBinder来完成此操作.
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'>
<div>
Hello, <span ui:field='nameSpan’/>, this is just good ‘ol HTML.
</div>
</ui:UiBinder>
Run Code Online (Sandbox Code Playgroud)
这些文件与Java代码分开,可以编辑为HTML.它们还提供与GWT小部件的集成,以便您可以从GWT代码轻松访问HTML中的元素.
| 归档时间: |
|
| 查看次数: |
29783 次 |
| 最近记录: |