1

現在、Orbeon Forms 用に独自の永続レイヤーを実装しています。データの仮想階層を理解している限り、「myform」という名前のアプリケーション「myapp」でフォームビルダーを使用してフォームを作成すると、フォームビルダーが呼び出されるはずです

/crud/myapp/myform/form/form.xhtml、新しく作成されたフォームを HTTP-PUT データとして渡します。したがって、次の注釈を付けたスプリング メソッドを作成しました。

@RequestMapping(method = RequestMethod.PUT, value = "/crud/{applicationName}/{formName}/form/form.xhtml")
public void saveForm(@PathVariable String formName, @RequestBody String putData)

このメソッドがフォームで呼び出されることを期待していました。しかし、このメソッドは呼び出されません。代わりにメソッド

@RequestMapping(method = RequestMethod.PUT, value = "/crud/{applicationName}/{formName}/data/{uuid}/data.xml")
public void saveInstance(@PathVariable String uuid, @RequestBody String putData)

呼ばれます。putData完全な XHTML フォームが含まれています。なぜこうなった?2 番目の URL は、フォームに値を入力すると、インスタンス、より具体的<xforms:instance id="fr-form-instance">にはフォームの一部を保存するためにのみ呼び出されると考えていました。

4

2 に答える 2

1

答えは、フォーム定義が 2 つの場所にある可能性があるということです。

  1. Form Builder で編集する場合、フォーム定義は Builder に関する限り、単なるフォーム データです。したがって、data.xmlforとして保存されorbeon/builderます。

  2. 公開すると、(HTTP PUT) form.xhtmlfor にコピーされますmyapp/myform。そのフォームに関連付けられたデータを表示/編集/検索するためにフォーム定義が必要な場合にも、そこから読み取られます (HTTP GET)。

これは、フォームを発行することで簡単に確認できます。

幸いなことに、発行されたフォームのフォーム データを処理するには、とにかく上記の 1 が必要です。

フォーム定義とフォーム データの両方に添付ファイルを含めることができることに注意してください。

于 2012-06-05T16:38:30.433 に答える
0

マニュアルにはそのように明示的には記載されていませんが、実際に呼び出されるURLをもう少し詳しく調べる必要があります/crud/orbeon/builder/data/<some uuid>/data.xml。これが実際にorbeonビルダーに関連付けられたインスタンスとしてフォームを保存していること、および保存されているフォームではないことがわかりますか?

このメソッドが完了したら、「publish」を押すと、上記の目的のsaveFormメソッドが呼び出されます。

于 2012-06-04T17:17:58.843 に答える