在我的网站上(由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请求中获取查询字符串。
在此先感谢您的任何建议。
答案 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>