将Grails生成的Java类包含在grails项目中

时间:2009-12-04 13:27:39

标签: java grails groovy

如何将Grails生成的java类包含在grails项目中?

如何通过grails将生成的类用于项目中的java类。 将我的Groovy类用于Grails项目的Java类。接受他的方法,属性等......

示例:

我有这样的Domain类:

package es.prueba.domain
class Author implements Serializable {
  String firstName
  String lastName

  static hasMany = [books: Book]       

  def relatesToMany = [ books : Book ]

  SortedSet books

  static constraints = {
      books(nullable: true)
  }

}

我想在Java文件中使用它。在我的例子中,我使用GWT发送带有服务AuthorService.groovy的对象。

我使用规则生成接口:grails generate-gwt-rpc

bookService的:

package org.example.client;

import com.google.gwt.user.client.rpc.RemoteService;

public interface BookService extends RemoteService {
    es.prueba.domain.Author getAuthor(int arg0);
}

BookServiceAsync:

package org.example.client;

import com.google.gwt.user.client.rpc.AsyncCallback;

public interface BookServiceAsync {
    void getAuthor(int arg0, AsyncCallback callback);
}

但我得到了例外:

No source code is available for type es.prueba.domain.Author; did you forget to inherit a required module?

当我使用:grails run-app命令运行应用程序时。

如何在项目中包含来源?

谢谢。

2 个答案:

答案 0 :(得分:0)

您是否将域名类放在es.prueba.domain包中?我在源代码示例中没有看到包声明。

欢呼声

答案 1 :(得分:0)

我对Grails的GWT插件不是很熟悉,但它看起来更像是一个标准的GWT问题。

关于how to organize projects

的GWT文档
  

默认源路径是存储模块XML文件的 client 子包。

您的软件包名称是 es.prueba.domain ,因此GWT在查找源代码时找不到它。您必须在模块文件中指定它(比如说Application.gwt.xml),如下所示:

<module>
   <!-- Inherit the core Web Toolkit stuff. -->
   <inherits name="com.google.gwt.user.User"/>

   <!-- add es.prueba.domain as source path -->
   <source path="domain"/>

   <!-- Specify the module entry point class. -->
   <entry-point class="es.prueba.Application"/>
</module>