【问题标题】:GWT - Multiple modules?GWT - 多个模块?
【发布时间】:2010-02-16 16:50:20
【问题描述】:

我正在努力使我的 GWT 应用程序的结构正确。 (是不是只有我一个人发现 GWT 代码很容易变得非常混乱和不可读?)

该应用程序应该是几个相当的接口 不同的区域 - 让我们说区域 A 和 B。目前我正在尝试 将其实现为具有两个选项卡的界面 - 一个将您带到区域 A 还有一个带你去B区。我不明白我怎么能过得很好 以这种方式分离两个不同区域所需的代码 虽然 - 应用 MVP 模式(在像我的选项卡这样的分层界面的情况下,我实际上并不清楚如何做)我最终拥有区域 A 和区域 B 例如在 client.view 和 client.presenter 中的代码 包装:

源代码 - 主要的 - 爪哇 - 客户 + 活动 - 主持人 + a_stuff + b_stuff - 看法 + a_stuff + b_stuff :

我还没有找到任何关于如何以及何时使用多个 模块,我想知道我的情况是否可能是多个 模块有意义吗?在这种情况下,代码将如何构建?

也许有必要提到我正在使用最新的 GWT、Maven 和 IntelliJ IDEA。

提示将不胜感激, 非常感谢 Stine :)

【问题讨论】:

    标签: gwt


    【解决方案1】:

    这是一个更全面的示例,它帮助我让两个模块正常工作: http://ashtoncthomas.blogspot.com/2011/02/multiple-modules-in-google-web-toolkit.html

    它使用的结构:

    src
     - main
         - java
             a_stuff.gwt.xml
             b_stuff.gwt.xml
             - client
                  - shared_stuff
                  - a_stuff
                       - presenter
                       - view
                  - b_stuff
                       - presenter
                       - view
    

    如果你想要两个 HTML 页面 - 每个模块一个(就像我做的那样),那么你需要创建两个页面:

    war
      page_a.html
      page_b.html
    

    并在您的两个 .gwt.xml 文件中定义您的入口点,例如(对于 a_stuff.gwt.xml):

    <module rename-to='module_a'>
    
        ... your stuff here ...
    
        <entry-point class="main.java.client.a_stuff.A_entry_point"></entry-point>
    </module>
    

    其中 A_entry_point 是一个实现 EntryPoint 的类。

    然后,在您的 HTML 页面中,只包含您想要的模块(例如,在 page_a.html 中):

    <script type="text/javascript" language="javascript" 
            src="module_a/module_a.nocache.js"></script>
    

    另外,如果你使用的是Eclipse,那么当你点击“GWT Compile Project”时,它会要求你“添加一个入口点类”,所以你必须点击“Entry”中的“Add”按钮点模块”部分的 GWT 编译窗口,并添加两个入口点模块(a_stuff.gwt.xmlb_stuff.gwt.xml)。您可以根据需要在此处添加/删除入口点模块,以选择要编译的模块。

    以上对我有用。我用它来制作我的网站的两个不同版本,每个版本都在一个单独的模块中。

    【讨论】:

    • 您好,但是 WAR/WEB-INF/web.xml 文件是什么?他们是一个“”......我为什么要选择一个默认页面?这个 web.xml 是否需要拥有来自 Admin 和 User 应用程序的 servlet?
    【解决方案2】:

    考虑在 yourmodule.gwt.xml 文件中声明多个源元素。如果没有声明源元素,则默认情况下 gwt 假定一个“客户端”声明。见下文:

    <!--Default if not declared-->
    <source path="client"/>
    

    您可以像这样声明多个源位置:

    <source path="a_stuff"/>
    <source path="b_stuff"/>
    

    现在每个源代码下面的所有内容都将被编译。 “客户端”只是默认值,不是规则。

    【讨论】:

      【解决方案3】:

      我建议是这样的:

      src
       - main
           - java
               + a_stuff
                 -client
                   - presenter
                   - view
                   - event
               + b_stuff
                 -client
                   - presenter
                   - view
                   - event
      

      【讨论】:

      • 对不起,如果我在这里有点慢!但这会导致两个模块吗?
      • 不,您需要两个模块文件:code.google.com/webtoolkit/doc/latest/… - 参见“将代码划分为多个模块”部分
      • 是的,我知道每个模块都有一个 gwt.xml :) 我的意思是(我猜)代码是否可以放入上述结构并且仍然是同一模块的一部分。如果它暗示了两个模块,那么我在理解我的 webapps 文件夹中的所有 html、css 和图像会发生什么时可能会有一点问题。天哪,我只想看到一个完整的例子! >D 好吧,我想我应该先看看你建议的部分——出于某种原因,我错过了那个部分! ;) 谢谢你..
      【解决方案4】:

      【讨论】:

      • 谢谢你..我会看看:)
      猜你喜欢
      • 2017-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-08
      • 2019-02-24
      • 2011-05-24
      相关资源
      最近更新 更多