我目前正在爲Orbeon Forms實現我自己的持久層。就我所瞭解的virtual hierachy of data而言,在名爲「myform」的應用程序「myapp」中使用Form Builder創建表單應導致表單構建器調用Orbeon Forms Builder自定義持久性API:爲什麼它調用/crud/.../data/data.xml?
/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表單。這是爲什麼發生?我認爲只有在填寫表單的值後,纔會調用第二個URL來保存實例,更具體地說是表單的<xforms:instance id="fr-form-instance">
部分。