我目前正在为 Orbeon Forms 实现我自己的持久层。据我了解数据的虚拟层次结构,在应用程序“myapp”中使用表单构建器创建一个名为“myform”的表单应该会导致表单构建器调用
/crud/myapp/myform/form/form.xhtml,将新创建的表单作为 HTTP-PUT 数据传递。因此,我创建了一个带有注释的 spring 方法:
@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 表单。为什么会这样?我认为第二个 URL 只会被调用来保存一个实例,更具体地说<xforms:instance id="fr-form-instance">
是表单的一部分,一旦我填写了表单的值。