Search code examples
orbeon

Adding dynamic path parameters into Orbeon Form HTTP Service


I'm trying to add a dynamic path parameter into an HTTP service in Orbeon forms, ie call a specific URL based on the content of a form field. I know we can change the query string parameters but I need to change the URL itself - the one in this field:

enter image description here

I've read that this is possible in newer version of Orbeon forms by using

{fr:control-string-value('testField')}

but we are stuck on an older version.

I saw another question on Stack Overflow from a few years ago: Orbeon Form HTTP Service where @ebruchez explained xpath is executed in the Resource URL field and gave the example:

http://localhost/RESTFUL/GETADDRESS/{/*/bar/foo}

However, I can't get this to work.

I have been able to successfully execute XPath, eg:

{string-join("test", "value")}

But I don't seem to be able to work out the correct Xpath syntax to dynamically select the value of a sample field and insert it into this box. I think I'm missing something in how I construct the XPath to retrieve the value.

This is what I've tried so far:

{xxf:value('testField')}
{xxf:value($testField)}
{fr:control-value($testField)}
{fr:control-value('testField')}
{xxf:property('testField')}
{xxf:property($testField)} 
{$testField}
{'testField'} 
{xxf:get-request-parameter('testField')}
{xxf:bind('testField')}
{/*/testField/}
{/*/content/testField/}
{//testField/}
{//*:testField/}
{//:testField/}
{(//testField)[1].text()}
{//form/content/testField/text()}
{(//testField)[1]/text()}

If anyone has any hints of advice on what I'm doing wrong or could give me an example of the syntax I put in here to retrieve a value, I'd be eternally grateful.


Solution

  • You can use AVT (Attribute Value Templates) https://doc.orbeon.com/xforms/core/attribute-value-templates?q=avt. In resource in <xf:submission> or HTTP service wizard use e.g. {instance('fr-form-instance')//url} or if you want edit only some part of URL you can use http://httpbin.org/{instance('fr-form-instance')//url}. I make simple form for you https://demo.orbeon.com/demo/fr/orbeon/builder/edit/18c4bee259fd9f398238b3c72041ee43ea691aa7 witch save respose to dataset and have second example in resource.

    Hope this help you