我正在使用Orbeon Froms 4.7并测试持久性API。我一直在提及文档:http://wiki.orbeon.com/forms/doc/developer-guide/form-runner/persistence-api。
我在表单生成器中创建了一个表单,发布了它,并在Form Runner中完成了几个表单。
App:nrs_smart_forms
形式:poc
要测试持久性API,我正在使用"邮递员 - REST客户端(打包应用程序)"来自Chrome网上商店。
目前,我已将请求配置为不受限制,如4.0之前的版本。请参阅:http://wiki.orbeon.com/forms/doc/developer-guide/page-flow-controller/authorization#TOC-Backward-compatibility。
<property
as="xs:string"
processor-name="oxf:page-flow"
name="page-public-methods"
value="GET HEAD POST PUT DELETE"/>
<property
as="xs:string"
processor-name="oxf:page-flow"
name="service-public-methods"
value="GET HEAD POST PUT DELETE"/>
在/ crud上执行GET ...成功检索表单数据:
/orbeon/fr/service/persistence/crud/nrs_smart_forms/poc/data/5dcc4d2cf9533c6477f92b1ad5addd5993494173/data.xml
然而,执行POST到/ search ...失败:
/ orbeon / FR /服务/持久/搜索/ nrs_smart_forms / POC
原始文字张贴:
<search>
<drafts>include</drafts>
<!-- Paging -->
<page-size>10</page-size>
<page-number>1</page-number>
<!-- Language -->
<lang>en</lang>
</search>
响应:500内部服务器错误
部分日志输出如下。我已经改变了一些格式以消除重复的前缀。从一个POST输出三个部分堆栈跟踪:
PageFlowControllerProcessor - error caught {controller: "oxf:/apps/fr/page-flow.xml", method: "GET", path: "/fr/service/persistence/form/"}
+----------------------------------------------------------------------------------------------------------------------+
|An Error has Occurred |
|----------------------------------------------------------------------------------------------------------------------|
|Unsupported path: /fr/service/persistence/form/ |
|----------------------------------------------------------------------------------------------------------------------|
|Application Call Stack |
|----------------------------------------------------------------------------------------------------------------------|
|oxf:/apps/fr/page-flow.xml |reading page model data output| 18|
|······················································································································|
|element=<service path="/fr/service/persistence/.*" model="persistence/proxy.xpl"/> |
|model =persistence/proxy.xpl |
|----------------------------------------------------------------------------------------------------------------------|
|oxf:/apps/fr/persistence/proxy.xpl |executing processor | 18|
|······················································································································|
|element=<p:processor name="fr:persistence-proxy"/> |
|name ={http://orbeon.org/oxf/xml/form-runner}persistence-proxy |
|----------------------------------------------------------------------------------------------------------------------|
|----------------------------------------------------------------------------------------------------------------------|
|Exception: org.orbeon.oxf.common.OXFException |
|----------------------------------------------------------------------------------------------------------------------|
|org.orbeon.oxf.fr.FormRunnerPersistenceProxy |proxyRequest |FormRunnerPersistenceProxy.sca| 67|
...
ProcessorService - /fr/service/persistence/form/ - Timing: 203
XFormsServer - xforms-submit-error - setting throwable {throwable: "
+----------------------------------------------------------------------------------------------------------------------+
|An Error has Occurred |
|----------------------------------------------------------------------------------------------------------------------|
|xf:submission for submission id: fr-default-submission, error code received when submitting instance: 500 |
|----------------------------------------------------------------------------------------------------------------------|
|Application Call Stack |
|----------------------------------------------------------------------------------------------------------------------|
|----------------------------------------------------------------------------------------------------------------------|
|Exception: org.orbeon.oxf.xforms.submission.XFormsSubmissionException |
|----------------------------------------------------------------------------------------------------------------------|
|.orbeon.oxf.xforms.submission.XFormsModelSubmission|getReplacer |XFormsModelSubmission.java | 729|
...
XSLTTransformer - Error at line 113 of oxf:/apps/fr/persistence/exist/search.xpl:
variable $instance is element(search, xs:anyType); supplied value has item type element(null, xs:anyType)
PageFlowControllerProcessor - error caught {controller: "oxf:/apps/fr/page-flow.xml", method: "POST", path: "/fr/service/exist/search/nrs_smart_forms/poc"}
+----------------------------------------------------------------------------------------------------------------------+
|An Error has Occurred |
|----------------------------------------------------------------------------------------------------------------------|
|Required item type of value of variable $instance is element(search, xs:anyType); supplied value has item type element|
|(null, xs:anyType) |
|----------------------------------------------------------------------------------------------------------------------|
|Application Call Stack |
|----------------------------------------------------------------------------------------------------------------------|
|oxf:/apps/fr/persistence/exist/search.xpl | | 113|
|oxf:/apps/fr/page-flow.xml |reading page view data output | 28|
|······················································································································|
|element=<service path="/fr/service/exist/search/([^/^.]+)/([^/^.]+)" view="persistence/exist/search.xpl"/> |
|view =persistence/exist/search.xpl |
|----------------------------------------------------------------------------------------------------------------------|
|oxf:/apps/fr/persistence/exist/search.xpl |reading processor output | 164|
|······················································································································|
|element=<p:output name="response" ref="data"/> |
|name =response |
|ref =data |
|----------------------------------------------------------------------------------------------------------------------|
|oxf:/ops/xforms/xforms-submission.xpl |reading processor output | 75|
|······················································································································|
|element=<p:output name="document" id="binary-document"/> |
|name =document |
|id =binary-document |
|----------------------------------------------------------------------------------------------------------------------|
|input:data | | |
|oxf:/ops/xforms/xforms-submission.xpl |reading processor output | 42|
|······················································································································|
|element=<p:param name="request" type="input"/> |
|name =request |
|----------------------------------------------------------------------------------------------------------------------|
|oxf:/apps/fr/persistence/exist/search.xpl |reading processor output | 157|
|······················································································································|
|element=<p:output name="data" id="query"/> |
|name =data |
|id =query |
|----------------------------------------------------------------------------------------------------------------------|
|oxf:/apps/fr/persistence/exist/search.xpl |executing XSLT transformation | 113|
|----------------------------------------------------------------------------------------------------------------------|
|Exception: org.orbeon.saxon.trans.XPathException |
|----------------------------------------------------------------------------------------------------------------------|
|org.orbeon.saxon.expr.Expression |typeError |Expression.java | 981|
...
答案 0 :(得分:1)
我认为问题在于您没有通过Content-Type: application/xml
标头。如果我在没有它的情况下尝试POST,我会得到相同的例外。
这适用于CURL:
curl -X POST -d @search.xml -H "Content-Type: application/xml" http://localhost:8080/orbeon/fr/service/persistence/search/orbeon/bookshelf
使用以下search.xml
:
<search>
<drafts>include</drafts>
<page-size>10</page-size>
<page-number>1</page-number>
<lang>en</lang>
</search>