webmcp

view framework/env/request/redirect.lua @ 254:2169a62e12f5

Work on demo application (to fit modified WebMCP API); Bugfixes of WebMCP
author jbe
date Mon Mar 02 01:15:34 2015 +0100 (2015-03-02)
parents ca88032cb37c
children 56d237b81c18
line source
1 --[[--
2 request.redirect{
3 module = module, -- module name
4 view = view, -- view name
5 id = id, -- optional id for view
6 params = params, -- optional view parameters
7 anchor = anchor -- anchor in URL
8 }
10 Calling this function causes the WebMCP to do a 303 HTTP redirect after the current view or action and all filters have finished execution. If routing mode "redirect" has been chosen, then this function is called automatically after an action and all its filters have finished execution. Calling request.redirect{...} (or request.forward{...}) explicitly inside an action will cause routing information from the browser to be ignored. To preserve GET/POST parameters of an action, use request.forward{...} instead. Currently no redirects to external (absolute) URLs are possible, there will be an implementation in future though.
12 --]]--
14 function request.redirect(args)
15 -- TODO: support redirects to external URLs too
16 -- (needs fixes in the trace system as well)
17 local module = args.module
18 local view = args.view
19 local id = args.id
20 local params = args.params or {}
21 local anchor = args.anchor or nil
22 if type(module) ~= "string" then
23 error("No module string passed to request.redirect{...}.")
24 end
25 if type(view) ~= "string" then
26 error("No view string passed to request.redirect{...}.")
27 end
28 if type(params) ~= "table" then
29 error("Params array passed to request.redirect{...} is not a table.")
30 end
31 if anchor and type(anchor) ~= "string" then
32 error("Anchor passed to request.redirect{...} must be a string or nil.")
33 end
34 if request.is_rerouted() then
35 error("Tried to redirect after another forward or redirect.")
36 end
37 request._redirect = {
38 module = module,
39 view = view,
40 id = id,
41 params = params,
42 anchor = anchor
43 }
44 trace.redirect{ module = args.module, view = args.view }
45 end

Impressum / About Us