Orbeon Forms CRUD有效,但搜索出现500错误

时间:2014-10-10 20:34:41

标签: forms orbeon

我正在使用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|

...

1 个答案:

答案 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>

我也是clarified the documentation