eXist-db получает строку запроса из HTTP-запроса - PullRequest
0 голосов
/ 14 ноября 2018

На моем сайте (управляемом 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 или что-то в этом роде (чтобы я мог дополнительно проанализировать запрос). Но ничего не выводится на параметр. У меня такое ощущение, что я не совсем понимаю, как получить строку запроса из http-запроса в контроллере eXist.

Большое спасибо заранее за любые советы.

1 Ответ

0 голосов
/ 14 ноября 2018

Сразу после того, как я опубликовал это, я обнаружил https://exist -db.org / существующие / 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>
...