{"id":2288,"date":"2022-12-08T20:43:14","date_gmt":"2022-12-08T12:43:14","guid":{"rendered":"https:\/\/qaqaq.top\/?p=2288"},"modified":"2022-12-19T20:41:52","modified_gmt":"2022-12-19T12:41:52","slug":"jstl%e6%a0%87%e7%ad%be%e5%ba%93-jstl%e6%a0%87%e7%ad%be%e5%ba%93%e7%9a%84%e4%bb%8b%e7%bb%8d%e3%80%81jstl%e6%a0%87%e7%ad%be%e5%ba%93-%e6%a0%87%e7%ad%be%e5%ba%93%e7%9a%84%e4%bd%bf%e7%94%a8%e6%ad%a5-2","status":"publish","type":"post","link":"https:\/\/qaqaq.top\/?p=2288","title":{"rendered":"JSTL\u6807\u7b7e\u5e93\u529f\u80fd\u6f14\u793a"},"content":{"rendered":"\n<p>JSTL\u6807\u7b7e\u5e93-JSTL\u6807\u7b7e\u5e93\u7684\u4ecb\u7ecd\u3001JSTL\u6807\u7b7e\u5e93-\u6807\u7b7e\u5e93\u7684\u4f7f\u7528\u6b65\u9aa4\u3001JSTL\u6807\u7b7e\u5e93-set\u6807\u7b7e\u3001JSTL\u6807\u7b7e\u5e93-if\u6807\u7b7e\u3001JSTL\u6807\u7b7e\u5e93-choose\u3001when\u3001otherwise\u6807\u7b7e\u3001JSTL\u6807\u7b7e\u5e93-\u4f7f\u7528forEach\u904d\u53861\u523010\u7684\u60c5\u51b5\u3001JSTL\u6807\u7b7e\u5e93-\u4f7f\u7528forEach\u904d\u5386Object\u6570\u7ec4\u3001JSTL\u6807\u7b7e\u5e93-\u4f7f\u7528forEach\u904d\u5386Map\u96c6\u5408\u3001JSTL\u6807\u7b7e\u5e93-\u4f7f\u7528forEach\u904d\u5386List\u96c6\u5408\u3001JSTL\u6807\u7b7e\u5e93-forEach\u6807\u7b7e\u6240\u6709\u5c5e\u6027\u7ec4\u5408\u4f7f\u7528\u4ecb\u7ecd<\/p>\n\n\n\n<p>JSTL\u6807\u7b7e\u5e93-JSTL\u6807\u7b7e\u5e93\u7684\u4ecb\u7ecd\u3001JSTL\u6807\u7b7e\u5e93-\u6807\u7b7e\u5e93\u7684\u4f7f\u7528\u6b65\u9aa4\u3001JSTL\u6807\u7b7e\u5e93-set\u6807\u7b7e\u3001JSTL\u6807\u7b7e\u5e93-if\u6807\u7b7e\u3001JSTL\u6807\u7b7e\u5e93-choose\u3001when\u3001otherwise\u6807\u7b7e<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;%@ taglib prefix=\"c\" uri=\"http:\/\/java.sun.com\/jsp\/jstl\/core\" %&gt;\n&lt;%--\n  Created by IntelliJ IDEA.\n  User: ZRich\n  Date: 2022\/12\/8\n  Time: \u4e0b\u5348 5:26\n  To change this template use File | Settings | File Templates.\n--%&gt;\n&lt;%@ page contentType=\"text\/html;charset=UTF-8\" language=\"java\" %&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;Title&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n&lt;%--JSTL \u6807\u7b7e\u5e93--%&gt;\n&lt;%--JSTL \u6807\u7b7e\u5e93 \u5168\u79f0\u662f\u6307 JSP Standard Tag Library JSP \u6807\u51c6\u6807\u7b7e\u5e93\u3002\u662f\u4e00\u4e2a\u4e0d\u65ad\u5b8c\u5584\u7684\u5f00\u653e\u6e90\u4ee3\u7801\u7684 JSP \u6807\u7b7e\u5e93\u3002--%&gt;\n&lt;%--EL \u8868\u8fbe\u5f0f\u4e3b\u8981\u662f\u4e3a\u4e86\u66ff\u6362 jsp \u4e2d\u7684\u8868\u8fbe\u5f0f\u811a\u672c\uff0c\u800c\u6807\u7b7e\u5e93\u5219\u662f\u4e3a\u4e86\u66ff\u6362\u4ee3\u7801\u811a\u672c\u3002\u8fd9\u6837\u4f7f\u5f97\u6574\u4e2a jsp \u9875\u9762\u53d8\u5f97\u66f4\u4f73\u7b80\u6d01\u3002--%&gt;\n\n&lt;%--JSTL \u7531\u4e94\u4e2a\u4e0d\u540c\u529f\u80fd\u7684\u6807\u7b7e\u5e93\u7ec4\u6210\u3002--%&gt;\n&lt;%--\u529f\u80fd\u8303\u56f4               URI                                        \u524d\u7f00--%&gt;\n&lt;%--\u6838\u5fc3\u6807\u7b7e\u5e93--\u91cd\u70b9       http:\/\/java.sun.com\/jsp\/jstl\/core           c--%&gt;\n&lt;%--\u683c\u5f0f\u5316                 http:\/\/java.sun.com\/jsp\/jstl\/fmt           fmt--%&gt;\n&lt;%--\u51fd\u6570                  http:\/\/java.sun.com\/jsp\/jstl\/functions      fn--%&gt;\n&lt;%--\u6570\u636e\u5e93(\u4e0d\u4f7f\u7528)         http:\/\/java.sun.com\/jsp\/jstl\/sql            sql--%&gt;\n&lt;%--XML(\u4e0d\u4f7f\u7528)            http:\/\/java.sun.com\/jsp\/jstl\/xml            x--%&gt;\n&lt;%--\u5728 jsp \u6807\u7b7e\u5e93\u4e2d\u4f7f\u7528 taglib \u6307\u4ee4\u5f15\u5165\u6807\u7b7e\u5e93 idea\u4f1a\u81ea\u52a8\u5f15\u5165--%&gt;\n\n&lt;%--JSTL \u6807\u7b7e\u5e93\u7684\u4f7f\u7528\u6b65\u9aa4--%&gt;\n&lt;%--    1\u3001\u5148\u5bfc\u5165 jstl \u6807\u7b7e\u5e93\u7684 jar \u5305\u3002--%&gt;\n&lt;%--        taglibs-standard-impl-1.2.5.jar--%&gt;\n&lt;%--        taglibs-standard-spec-1.2.5.jar--%&gt;\n&lt;%--    2\u3001\u7b2c\u4e8c\u6b65\uff0c\u4f7f\u7528 taglib \u6307\u4ee4\u5f15\u5165\u6807\u7b7e\u5e93\u3002--%&gt;\n\n&lt;%--\n    Servlet 10 \u9700\u8981\u989d\u5916\u5bfc\u5165\u5982\u4e0b\u4e24\u4e2a\u5305 \u5426\u5219jsp\u9875\u9762\u4f1a\u62a5\u9519\n        jakarta.servlet.jsp.jstl-2.0.0.jar\n        jakarta.servlet.jsp.jstl-api-2.0.0.jar\n--%&gt;\n\n&lt;%--    &lt;c:forEach end=\"\"&gt;&lt;\/c:forEach&gt;--%&gt;\n\n&lt;%--core \u6838\u5fc3\u5e93\u4f7f\u7528--%&gt;\n\n    &lt;%--\n    i.&lt;c:set \/&gt;\n        \u4f5c\u7528\uff1aset \u6807\u7b7e\u53ef\u4ee5\u5f80\u57df\u4e2d\u4fdd\u5b58\u6570\u636e\n\n        \u57df\u5bf9\u8c61.setAttribute(key,value);\n        scope \u5c5e\u6027\u8bbe\u7f6e\u4fdd\u5b58\u5230\u54ea\u4e2a\u57df\n            page \u8868\u793a PageContext \u57df\uff08\u9ed8\u8ba4\u503c\uff09\n            request \u8868\u793a Request \u57df\n            session \u8868\u793a Session \u57df\n            application \u8868\u793a ServletContext \u57df\n        var \u5c5e\u6027\u8bbe\u7f6e key \u662f\u591a\u5c11\n        value \u5c5e\u6027\u8bbe\u7f6e\u503c\n    --%&gt;\n    \u4fdd\u5b58\u4e4b\u524d\uff1a${requestScope.abc} &lt;br\/&gt;\n    &lt;c:set scope=\"request\" var=\"abc\" value=\"abcValue\"\/&gt;\n    \u4fdd\u5b58\u4e4b\u540e\uff1a${requestScope.abc} &lt;br\/&gt;\n    &lt;hr\/&gt;\n\n    &lt;%--\n    ii.&lt;c:if \/&gt;\n        if \u6807\u7b7e\u7528\u6765\u505a if \u5224\u65ad\u3002\n        test \u5c5e\u6027\u8868\u793a\u5224\u65ad\u7684\u6761\u4ef6\uff08\u4f7f\u7528 EL \u8868\u8fbe\u5f0f\u8f93\u51fa\uff09\n    --%&gt;\n    &lt;c:if test=\"${12 == 12}\"&gt;\n        &lt;h1&gt;12\u7b49\u4e8e12&lt;\/h1&gt;\n    &lt;\/c:if&gt;\n    &lt;c:if test=\"${12 != 12}\"&gt;\n        &lt;h1&gt;12\u7b49\u4e8e12&lt;\/h1&gt;\n    &lt;\/c:if&gt;\n    &lt;hr\/&gt;\n\n\n    &lt;%--\n    iii.&lt;c:choose&gt; &lt;c:when&gt; &lt;c:otherwise&gt;\u6807\u7b7e\n        \u4f5c\u7528\uff1a\u591a\u8def\u5224\u65ad\u3002\u8ddf switch ... case .... default \u975e\u5e38\u63a5\u8fd1\n\n        choose \u6807\u7b7e\u5f00\u59cb\u9009\u62e9\u5224\u65ad\n        when \u6807\u7b7e\u8868\u793a\u6bcf\u4e00\u79cd\u5224\u65ad\u60c5\u51b5\n            test \u5c5e\u6027\u8868\u793a\u5f53\u524d\u8fd9\u79cd\u5224\u65ad\u60c5\u51b5\u7684\u503c\n        otherwise \u6807\u7b7e\u8868\u793a\u5269\u4e0b\u7684\u60c5\u51b5\n\n        &lt;c:choose&gt; &lt;c:when&gt; &lt;c:otherwise&gt;\u6807\u7b7e\u4f7f\u7528\u65f6\u9700\u8981\u6ce8\u610f\u7684\u70b9\uff1a\n        1\u3001\u6807\u7b7e\u91cc\u4e0d\u80fd\u4f7f\u7528 html \u6ce8\u91ca\uff0c\u8981\u4f7f\u7528 jsp \u6ce8\u91ca\n        2\u3001when \u6807\u7b7e\u7684\u7236\u6807\u7b7e\u4e00\u5b9a\u8981\u662f choose \u6807\u7b7e\n    --%&gt;\n    &lt;%\n        request.setAttribute(\"height\",178);\n    %&gt;\n    &lt;c:choose&gt;\n        &lt;%-- \u8fd9\u662fhtml\u6ce8\u91ca --%&gt;\n        &lt;c:when test=\"${requestScope.height &gt; 190}\"&gt;\n            &lt;h2&gt;\u5c0f\u5de8\u4eba&lt;\/h2&gt;\n        &lt;\/c:when&gt;\n        &lt;c:when test=\"${requestScope.height &gt; 180}\"&gt;\n            &lt;h2&gt;\u5f88\u9ad8&lt;\/h2&gt;\n        &lt;\/c:when&gt;\n        &lt;c:when test=\"${requestScope.height &gt; 170}\"&gt;\n            &lt;h2&gt;\u8fd8\u53ef\u4ee5&lt;\/h2&gt;\n        &lt;\/c:when&gt;\n        &lt;c:otherwise&gt;\n            &lt;c:choose&gt;\n                &lt;c:when test=\"${requestScope.height &gt; 160}\"&gt;\n                    &lt;h2&gt;\u5927\u4e8e160&lt;\/h2&gt;\n                &lt;\/c:when&gt;\n                &lt;c:when test=\"${requestScope.height &gt; 150}\"&gt;\n                    &lt;h2&gt;\u5927\u4e8e 150&lt;\/h2&gt;\n                &lt;\/c:when&gt;\n                &lt;c:when test=\"${requestScope.height &gt; 140}\"&gt;\n                    &lt;h2&gt;\u5927\u4e8e 140&lt;\/h2&gt;\n                &lt;\/c:when&gt;\n                &lt;c:otherwise&gt;\n                    \u5176\u4ed6\u5c0f\u4e8e140\n                &lt;\/c:otherwise&gt;\n            &lt;\/c:choose&gt;\n        &lt;\/c:otherwise&gt;\n    &lt;\/c:choose&gt;\n\n\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre>\n\n\n\n<p>JSTL\u6807\u7b7e\u5e93-\u4f7f\u7528forEach\u904d\u53861\u523010\u7684\u60c5\u51b5\u3001JSTL\u6807\u7b7e\u5e93-\u4f7f\u7528forEach\u904d\u5386Object\u6570\u7ec4\u3001JSTL\u6807\u7b7e\u5e93-\u4f7f\u7528forEach\u904d\u5386Map\u96c6\u5408\u3001JSTL\u6807\u7b7e\u5e93-\u4f7f\u7528forEach\u904d\u5386List\u96c6\u5408<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;%@ page import=\"top.qaqaq.P211.Student\" %&gt;\n&lt;%@ page import=\"java.util.*\" %&gt;\n&lt;%@ taglib prefix=\"c\" uri=\"http:\/\/java.sun.com\/jsp\/jstl\/core\" %&gt;\n&lt;%--\n  Created by IntelliJ IDEA.\n  User: ZRich\n  Date: 2022\/12\/8\n  Time: \u4e0b\u5348 7:20\n  To change this template use File | Settings | File Templates.\n--%&gt;\n&lt;%@ page contentType=\"text\/html;charset=UTF-8\" language=\"java\" %&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;Title&lt;\/title&gt;\n    &lt;style&gt;\n        table{\n            border: 1px blue solid;\n            width: 600px;\n            border-collapse: collapse;\n        }\n        td,th{\n            border: 1px blue solid;\n        }\n    &lt;\/style&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n&lt;%--iv. &lt;c:forEach \/&gt;--%&gt;\n\n    &lt;%--\n    1.\u904d\u5386 1 \u5230 10\uff0c\u8f93\u51fa\n        begin \u5c5e\u6027\u8bbe\u7f6e\u5f00\u59cb\u7684\u7d22\u5f15\n        end \u5c5e\u6027\u8bbe\u7f6e\u7ed3\u675f\u7684\u7d22\u5f15\n        var \u5c5e\u6027\u8868\u793a\u5faa\u73af\u7684\u53d8\u91cf(\u4e5f\u662f\u5f53\u524d\u6b63\u5728\u904d\u5386\u5230\u7684\u6570\u636e)\n        for (int i = 1; i &lt; 10; i++)\n    --%&gt;\n    &lt;table&gt;\n        &lt;c:forEach begin=\"1\" end=\"10\" var=\"i\"&gt;\n            &lt;tr&gt;\n                &lt;td&gt;\u7b2c${i}\u884c&lt;\/td&gt;\n            &lt;\/tr&gt;\n        &lt;\/c:forEach&gt;\n    &lt;\/table&gt;\n    &lt;hr\/&gt;\n\n    &lt;%--\n    2.\u904d\u5386 Object \u6570\u7ec4\n        for (Object item: arr)\n        items \u8868\u793a\u904d\u5386\u7684\u6570\u636e\u6e90\uff08\u904d\u5386\u7684\u96c6\u5408\uff09\n        var \u8868\u793a\u5f53\u524d\u904d\u5386\u5230\u7684\u6570\u636e\n    --%&gt;\n    &lt;%\n        request.setAttribute(\"arr\",new String&#91;]{\"18610541354\",\"18688886666\",\"18699998888\"});\n    %&gt;\n    &lt;c:forEach items=\"${requestScope.arr}\" var=\"itme\"&gt;\n        ${itme} &lt;br\/&gt;\n    &lt;\/c:forEach&gt;\n    &lt;hr\/&gt;\n\n    &lt;%--3.\u904d\u5386 Map \u96c6\u5408--%&gt;\n    &lt;%\n        Map&lt;String,Object&gt; map = new HashMap&lt;String, Object&gt;();\n        map.put(\"key1\", \"value1\");\n        map.put(\"key2\", \"value2\");\n        map.put(\"key3\", \"value3\");\n\/\/        for (Map.Entry&lt;String, Object&gt; entry : map.entrySet()){\n\/\/\n\/\/        }\n        request.setAttribute(\"map\",map);\n    %&gt;\n\n    &lt;c:forEach items=\"${requestScope.map}\" var=\"entry\"&gt;\n        &lt;h1&gt;${entry.key} = ${entry.value}&lt;\/h1&gt;\n    &lt;\/c:forEach&gt;\n\n&lt;%--4. \u904d\u5386 List \u96c6\u5408---list \u4e2d\u5b58\u653e Student \u7c7b\uff0c\u6709\u5c5e\u6027\uff1a\u7f16\u53f7\uff0c\u7528\u6237\u540d\uff0c\u5bc6\u7801\uff0c\u5e74\u9f84\uff0c\u7535\u8bdd\u4fe1\u606f--%&gt;\n    &lt;%\n        List&lt;Student&gt; studentList = new ArrayList&lt;Student&gt;();\n        for (int i = 1; i &lt;= 10; i++) {\n            studentList.add(new Student(i, \"username\" + i, \"password\" + i, 18 + i, \"phone\" + i));\n        }\n        request.setAttribute(\"stus\",studentList);\n    %&gt;\n    &lt;table&gt;\n        &lt;tr&gt;\n            &lt;th&gt;\u7f16\u53f7&lt;\/th&gt;\n            &lt;th&gt;\u7528\u6237\u540d&lt;\/th&gt;\n            &lt;th&gt;\u5bc6\u7801&lt;\/th&gt;\n            &lt;th&gt;\u5e74\u9f84&lt;\/th&gt;\n            &lt;th&gt;\u7535\u8bdd&lt;\/th&gt;\n            &lt;th&gt;\u64cd\u4f5c&lt;\/th&gt;\n        &lt;\/tr&gt;\n        &lt;%--\n            items \u8868\u793a\u904d\u5386\u7684\u96c6\u5408\n            var \u8868\u793a\u904d\u5386\u5230\u7684\u6570\u636e\n            begin \u8868\u793a\u904d\u5386\u7684\u5f00\u59cb\u7d22\u5f15\u503c\n            end \u8868\u793a\u7ed3\u675f\u7684\u7d22\u5f15\u503c\n            step \u5c5e\u6027\u8868\u793a\u904d\u5386\u7684\u6b65\u957f\u503c\n            varStatus \u5c5e\u6027\u8868\u793a\u5f53\u524d\u904d\u5386\u5230\u7684\u6570\u636e\u7684\u72b6\u6001\n            for\uff08int i = 1; i &lt; 10; i+=2\uff09\n        --%&gt;\n    &lt;c:forEach begin=\"2\" end=\"7\" step=\"2\" varStatus=\"status\" items=\"${requestScope.stus}\" var=\"stu\"&gt;\n        &lt;tr&gt;\n            &lt;td&gt;${stu.id}&lt;\/td&gt;\n            &lt;td&gt;${stu.username}&lt;\/td&gt;\n            &lt;td&gt;${stu.password}&lt;\/td&gt;\n            &lt;td&gt;${stu.age}&lt;\/td&gt;\n            &lt;td&gt;${stu.phone}&lt;\/td&gt;\n            &lt;%--\n            \u8bfb\u65b9\u6cd5\n             getXxx\u6216isXxx\n             --%&gt;\n            &lt;td&gt;${status.first}&lt;\/td&gt;\n        &lt;\/tr&gt;\n    &lt;%--${stu} &lt;br\/&gt;--%&gt;\n    &lt;\/c:forEach&gt;\n    &lt;\/table&gt;\n\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre>\n\n\n\n<p>JSTL\u6807\u7b7e\u5e93-forEach\u6807\u7b7e\u6240\u6709\u5c5e\u6027\u7ec4\u5408\u4f7f\u7528\u4ecb\u7ecd<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-127.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"924\" height=\"395\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-127.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2289\"  sizes=\"(max-width: 924px) 100vw, 924px\" \/><\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>JSTL\u6807\u7b7e\u5e93-JSTL\u6807\u7b7e\u5e93\u7684\u4ecb\u7ecd\u3001JSTL\u6807\u7b7e\u5e93-\u6807\u7b7e\u5e93\u7684\u4f7f\u7528\u6b65\u9aa4\u3001JSTL\u6807\u7b7e\u5e93-set\u6807\u7b7e\u3001JSTL\u6807 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[59],"tags":[61],"class_list":["post-2288","post","type-post","status-publish","format-standard","hentry","category-javaweb-code","tag-javaweb"],"_links":{"self":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts\/2288"}],"collection":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2288"}],"version-history":[{"count":2,"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts\/2288\/revisions"}],"predecessor-version":[{"id":2710,"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts\/2288\/revisions\/2710"}],"wp:attachment":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2288"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2288"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2288"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}