eXist-db从HTTP请求获取查询字符串

时间:2018-11-14 15:48:37

标签: xquery exist-db

在我的网站上(由eXist-db 4.4驱动),我有一个搜索页面:

http://localhost:8081/exist/apps/deheresi/search

这包含一个简单的表单,可以提交搜索请求,例如:

http://localhost:8081/exist/apps/deheresi/search?keyword=someword

该页面通过eXist-db中的模板提供,该模板由controller.xql接收请求触发:

 else if (starts-with(lower-case($exist:path), "/search")) then
    <dispatch xmlns="http://exist.sourceforge.net/NS/exist">
        <forward url="{$exist:controller}/search.html"/>
        <view>
            <forward url="{$exist:controller}/modules/view.xql">
                <add-parameter name="searchterm" value="{$exist:resource}"/>
                <add-parameter name="pagetype" value="search"/>
            </forward>
        </view>
    </dispatch>

在这种情况下,我假设$exist:resource将包含某个字符串,其中包含?keyword=someword或类似的东西(以便我可以进一步解析该请求)。但是没有任何输出到该参数。我觉得我不太了解如何从eXist控制器中的http请求中获取查询字符串。

在此先感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

发布此帖子后,我发现https://exist-db.org/exist/apps/fundocs/view.html?uri=http://exist-db.org/xquery/request

 request:get-parameter($name as xs:string, $default-value as item()*) as xs:string*

完全按照需要进行操作,例如:

else if (starts-with(lower-case($exist:path), "/search")) then
  <dispatch xmlns="http://exist.sourceforge.net/NS/exist">
    <forward url="{$exist:controller}/search.html"/>
    <view>
        <forward url="{$exist:controller}/modules/view.xql">
            <add-parameter name="searchterm" value="{request:get-parameter("keyword","")}"/>
            <add-parameter name="pagetype" value="search"/>
        </forward>
    </view>
 </dispatch>