我想在我的sapui5应用程序中捕获一个可选的url参数。
清单:
"routes": [
{
"pattern": "page_1:query:",
"name": "page_1",
"target": [
"page_1"
]
}]
控制器:
handleRouteMatched: function(oEvent) {
var oArgs, oView, oQuery;
oArgs = oEvent.getParameter("arguments"); // undefined
console.log(oEvent.mParameters);
测试用例
根据测试用例 PatternMatching
URLPattern:query:
清单模式:查询:
匹配:{“query”:“test = 123123,bla = 123213”}
网址:
/webapp/index.html?test=123
没有价值:oEvent.mParameters.data.hash:“”
/webapp/index.html?#/查询= 123
有值:oEvent.mParameters.data.hash:query =“123”
答案 0 :(得分:1)
我认为你在理解UI5路由概念时失败了。您不应该将其理解为GET请求。您可以在散列路由中传递的参数不是GET参数。
首先,您应该了解网址的各个部分,在这种情况下,我们可以这样说:
<host>:<port>?myGetParam1=value1&myGetParam2=value2#/My/Navigation/Pattern/ParamValue1/ParamValue2`
从?
到#
,您拥有GET请求的参数。他们去服务器端
从#
到最后,您有哈希路径。用于客户端。
如果您在清单中将模式定义为
/My/Navigation/Pattern/{ParamValue1}/:ParamValue2:
然后以下示例将起作用
#/ My / Navigation / Pattern / 3 - &gt;它将3作为必需的 paramValue1 传递,而对于可选的 paramValue2
则没有任何内容#/ My / Navigation / Pattern / 3/2 - &gt;它将3作为强制性 paramValue1 传递,将2作为可选 paramValue2
但是如果你试试
<强>#/我/导航/模板/ 强>
它会失败,因为您已将 paramValue1 设置为必需
要获取这些参数,请在控制器中为“RouteMatched”事件定义一个事件处理程序。参数将位于事件对象的“参数”中。清楚地解释了here。
我建议你通过this tutorial。这是UI5 demokit中最好的教程之一。