Link method of %CSP.Page doesn't add query parameters
The Link() method of %CSP.Page claims to take a link and an array of query parameters and transform them into a URL. The documentation is here. But when I pass in query parameters, they aren't included.
What am I missing?
Discussion (1)0
Comments
That works only for CSP context and CSP pages. You can write a wrapper I suppose, but I think it would be easier to just write your own querybuilder code:
ClassMethod Link(server = "www.example.com")
{
try {
set cspContext = $data(%request)
if 'cspContext {
set %request = {} // ##class(%CSP.Request).%New()
set %response = ##class(%CSP.Response).%New()
set %session = {} //##class(%CSP.Session).%New(-1,0)
}
set query("param") = 1
set page = "/abcd.csp"
set url = ##class(%CSP.Page).Link(page,.query)
set url = $replace(url, page, server)
write url
kill:'cspContext %request,%response,%session
} catch {
kill:'$g(cspContext) %request,%response,%session
}
}With querybuilder:
ClassMethod Link(server = "www.example.com")
{
set query("param") = 1
set data = ""
set param = $order(query(""),1,value)
while (param'="") {
set data=data _ $lb($$$URLENCODE(param)_"="_$$$URLENCODE(value))
set param = $order(query(param),1,value)
}
write server _ "?" _ $lts(data, "&")
}