1

いくつかのドメインオブジェクトを含むgrailsプロジェクトがあります。このコードでは、ドキュメントを解析できるJavaプロジェクトを使用しています。そのJavaプロジェクトを呼び出すコントローラーは、JAXBを使用して、Javaプロジェクトによって返されたオブジェクトからXMLを生成しています。このXMLドキュメント(JAXBを使用してテキストを解析した後に生成される)を使用して、grailsプロジェクトのドメインクラスにデータを入力したいと思います。これはgrailsでどのように機能しますか?Castorのようなものを使用して、Groovyクラスの名前を使用してマッピングを作成できますか?アイデアは、データベースに新しいエントリを生成し、アップロードしたドキュメントから解析されたテキストに基づいてユーザーのために保存したいというものです。

とにかく、これはグライルでもどのように機能しますか?次のようなものを使用して、別のオブジェクトのコントローラーから新しいドメインオブジェクトを作成できますか?

 Project p = new Project(); 

そして、p.save()

4

1 に答える 1

0

ここからCastorCoreとCastorXMLjarをダウンロードし、ディレクトリに配置します(Grailsの依存関係管理libを使用してこの依存関係を管理するためのより良い方法がおそらくありますが、これは迅速で汚いです)。

Castorイントロスペクションモードを使用すると、XMLがドメインとうまく一致していれば、マッピングファイルの作成について心配する必要はありません。次に例を示します。

grails-app / domain / MyDomain.groovy

class MyDomain {
    String foo
    String bar
}

grails-app / controllers / MyController.groovy

import org.exolab.castor.xml.Unmarshaller
import java.io.ByteArrayInputStream

class MyController {

    def myAction = {
        def xml = '''
<myDomain>
  <foo>My Foo String</foo>
  <bar>My Bar String</bar>
</myDomain>
'''
        def reader = new ByteArrayInputStream(xml.bytes).newReader()
        def domain = (MyDomain)Unmarshaller.unmarshal(MyDomain.class, reader)
        domain.save()

        def count = MyDomain.countByFoo('My Foo String')

        render "Found $count results"
    }
}

に移動するlocalhost:8080/appname/my/myActionと、「Found N results」、N>0と表示されます。

于 2010-09-16T21:58:04.967 に答える