Seam GWT页面流转换

时间:2010-10-29 11:08:47

标签: gwt seam

我正在尝试整合Seam和GWT。我想知道是否可以在Seam页面流中指定html页面。可能吗 ?如果是,那么转移中的名称代表什么?

3 个答案:

答案 0 :(得分:2)

我们还使用Seam页面流和GWT的组合。显然,我们将登录页面从主页面划分为启用https登录。但是,我们不使用普通的html页面,我们仍然使用xhtml页面。您可以通过将<html></html>对与<f:view></f:view>对包装在一个Seam xhtml页面中包含GWT html页面:

<f:view
    contentType="text/html"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:s="http://jboss.com/products/seam/taglib"
    xmlns:ui="http://java.sun.com/jsf/facelets">
    <html>
        <!-- ... -->
    </html>
</f:view>

通过使用这样的Seam包装的html页面,您可以毫无困难地定义页面转换。

正如Peter Knego已经指出的那样,建议对不同的(x)html页面使用不同的GWT模块。

答案 1 :(得分:1)

通常,GWT是客户端状态应用程序。这意味着您在一个html页面中运行整个应用程序。浏览器永远不会重新加载此页面。如果浏览器重新加载此页面,则内部应用程序状态将丢失(变量等)。

现在,您当然可以创建具有多个html页面的GWT应用程序。通常,您将创建不同的GWT模块并将它们加载到单独的html页面中。 Eclipse插件为每个模块创建一个主页。

您可以创建普通的Seam应用程序,只需将必要的行从GWT主页复制到Seam“页面”。

请记住,这些单独的GWT模块之间不共享任何状态。

<强>编辑:

您可以将Seam页面流映射到GWT按钮,以便单击该按钮可以转到页面流中的下一页:

  1. 使用包含Window.Location.assign(URL)的onClick处理程序创建一个GWT按钮。单击此按钮将在当前浏览器页面中打开给定的URL。
  2. 使Seam页面流页面的URL可读。我相信(不是这方面的专家)使用view-id="page_url"元素内的<page>属性完成。
  3. 这是一个手动过程(不是类型安全的),它依赖于您正确地将view-id与按钮中的URL匹配。一方面的更改将要求您手动更正另一侧。 为了让生活更轻松,你可以创建一个函数,为Button(或GWT中的任何其他元素)添加一个监听器。

答案 2 :(得分:1)

这在很大程度上取决于你想要达到的目标。这就是你是否计划创建像单页面应用程序这样的桌面,其中大多数状态由客户端或主逻辑以及服务器提供的html页面保存。

如果您像app一样使用桌面,那么您可能会完全使用GWT构建应用程序的客户端。对于初始请求,Seam返回一个简单的html页面,该页面提取.nocache.js,然后下载应用程序的已编译主脚本.cache.html。从这里GWT接管(从加载模块的onModuleLoad()开始EntryPoint)并通过替换返回的html页面的<body>标记来构建应用程序的整个布局。用户交互和状态通过服务器同步,但渲染由GWT完成。

如果你选择Seam和JSF的组合,你仍然可以从GWT中受益。常见的情况是有选择地将GWT小部件插入现有html页面中的特定位置(有关详细信息,请参阅here)。这样,您可以使用Seam进行渲染,页面流等,并使用GWT小部件扩展您的页面。

顺便说一句,如果您需要SSL进行注册和/或用户身份验证(以及自动表单完成!)我强烈建议按照@kraftan的建议进行操作。其他一切都是痛苦的。