说明: 这是本书的第八章内容,由于项目需要,提到前面来看啦~~~O(∩_∩)O

一、模板template的定义

Play中的模板是html代码和Scala代码的混合而成的,其中Scala代码以@开头,一个简单的模板如下:

@(product: List[Product], count: Integer)
<dl>
@for(product <- products) { <!-- A Scala "for" loop -->
<dt>
<a href="@routes.Products.show(product.ean)"> <!-- A Scala function call -->
@product.ean - @product.name <!-- outputting Scala values -->
</a>
</dt>
<dd>@product.description</dd>
}
</dl>

注解: 如果想用HTML的方式输出变量或表达式的值,而表示为Scala代码,使用@Html(), 如:

// boldName = "<b>world</b>
Hello @Html(boldName)!

二、表达式的范围Scope--in-line expression

1. 这里的"-"是文本,有两个Scala表达式

aaarticlea/png;base64,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" alt="" width="318" height="52" />

2. a multi-token statement

aaarticlea/png;base64,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" alt="" width="392" height="53" />

3. a multi-statement expression

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnEAAABYCAIAAAAV0za4AAAee0lEQVR4nO3daVwT194H8OfF4AnaCthFlKAgWkBZRSCAWBVBrftCEgEFweuKCxFwqwqCuLAEVHCpt9YWbylhcUGsC9WKgqgouC+IG8YFCyIgAZKc58XIdJgEhBDB0v/3c14kJyeTmSEzv5kzZ8L/YQAAAACow/919AwAAAAAnQRkKgAAAKAekKkAAACAekCmAgAAAOoBmQoAAACoB2QqAAAAoB6QqQAAAIB6QKYCAAAA6gGZCgAAAKgHZCoA7UQul6ekppKPb9++8/RpScfOz82bN580zENubm7HzgwAnUObMjUwMHBV8Ir9P+4zNTE5c+ZMMy1fvnyZLBIli0TNtJHU1vp4e/P5/Dl+fm2ZK9CMly9fkit5z+49HT0v/zoymQyxWD/+8APGeMK4cV1YrI6dnzFurmw2m3zctVu38+fOdez8dIjFixZ5enpGC2M6ekb+1W7duOk7e7anp2dOTk5HzUNx8cNkkSj3woU2Tkf1TA3bsGHef/5DPv7px/8a9O3bVMv8/HwCoYnjxxUWFHxwsp4z+H366Ks8V6AlPGd8rAOXqqqqAIHgY0y5c9DV1c3Pz8cYe3t5uo4a1bEzw+dy3blc8nGfPvpl5W86dn46SnpKCrUe1G7r5i0facqdT3pKSvPnXR+VTCY7mJraz9CQyjXVqJip9fX1BEIPHzwgn1ZUVBAIVVdXK228ZsUKAqGr+fktmXJcTAxk6sf28TL18ePHzXwT/un02HptnIKpicmNa9cxxsuWLFm0cIE6Zkp1C+fPp7LE0ty8jVNr+8rpKB81Uy0tLF7/9ddHmngn07GZSprl6amB2tSBpGKm3rt7r1evXtTTzMxMAqFXr0qVNra1GUwg1MIpN5OpN27efFryrLWzChR9vEw9lnGEQKglHRIt8bTk2ZOOvuhI1/bYCAwIKH1VijHOOHz4l3371DBPbZCekrIpPJx8vDIoqI1T++dmqijpt4+UqRfOn/9mwICsrKyPMXHVPH/+gnpc0vTutO1doK31+NFjUdJvSjP1+fMX7Tb4YHd8PIFQTU2NylNQMVN/2LXT2soSY7xt27Z5fr67ExIIhF6+fKm08WAry6Yy9eWrVwECgYW52Rg3Vwd7uxihcMG8+YxMPXnypIGBwbQpk2MiIzeFhTnY2yv2LgoEy/lcbppItHf3nrl+fjo9dAiEqqqq6G3S0tMNDQ3HuLnO9fMbO9rN0cmRw+GM/HZYy5f67t275FVhpaWFE6murvaZOVNfn71u7brg4BXmg8ycnRwd7O0CBAL61/3cn396zuBbmpvr6upijJcvD3QZ/i1v+vRBA01nzvSimh07dqxPnz6TJowPDw0NDgwcMcx5fWgo4xMLCws5HA65kqdMnJiTm/vNgAFUph5OS/vWeSh1Xa2+vn6WpyfPfTpLU/Pho0f06QQHr2BpalIrcHlgIIFQ5Jb3XVtnTp9OFok4HA6BUIBAQK2W/Mst6p+gq6iocHBwsLUZHLpu3TahcAaPGxgYyGiTdeKEBmI5cuxXBgVtWL9+rJsr408QJFjet08fDw+PYcOc+VzugrlzB1tZtfEo+J8bG+1A5ZWz/8d95EYdtiHMyMjIbojNqBEjZnh4MIZNbYmI4HO52jo6GONtcXHfDBgwacJ4lxHDeTwe1ebSxYtsNnuwldWyxYu3RETMmzNn9erVjI97/Pixg4ND7969XV1GzvLwyMnNNTE2pmfqquAV/QwNCxqOC0VJv/Hd3U2MjfPzr9CnszliE4HQkMHWHnzef/z8ApYu5XA49O1IlJKiuDm09nrho4cPPfg8NpsdHBz8zYABvt7eC+bODVkfotjSxNi4X79+c/38NoWFzZ8zJyUl5e/VkpfnwedxOJxun33m7eU12nUUl8frwmLx3d0nTxhPn6XCggJ9fX1y09sVH79+zZojR44onbGkAwfcudy2XIdOTExks9nkfmljWHi0MMbE2Ji+hcrlct70aUhTk9r5z/T0YBxkSyQS80Fm1laWe3fvSU5KEixbptNDhzFXL168sLa2ovZd3GlTZ/D5BEI5OTkSiYQxVz/s2kkg9O5du2fq9rhYjp3t7Vu3+hsZYYyrqqqayVQDAwOlmVpRUcFms2fPmkXVTJ08iUCInqk5584TCAUsWUrVyGQyczMzBwcHqibpwAEyeCjHMzMRi1V0v4iq2ffjjxqIlXTgAFWz/vvvCYQGW1m2fKmrKiuzTp5UWrL//LPl08EYOzs5EgjZ2w6pqKgga5b4+7PZbEY30TJ/f5amJpfHC29ISplMJn72/ugyLiaGQIh+hlFXV2c3xIbNZktqa8maP7L+IBBSXMn081TykIgxhzo9dAquXv37XZMmKl2BAUvf/2kqKipyz5//NTGRQGhFYGDu+fNkqaysbNWakUqlGohlbWUpk8moyiX+/hwOh9GyuOjvv29FRYWWtta9e/fpDYYPcyYQ2rt7N/n0eGYmgdDLV69aNT+UHXFx3bW6q/beTq+NKycsJIRASEtb++Tvx8ia348e1dLWSktPZ7Tsb2Q0w8Pjy6+/utbw5XxW8n4nezkvj9ympFIp1f7ypUv9DA3F4vdHq2Vl5RqIZTZo0KuGndW+vXs1EItxnurmOurE8RP0mmlTJh87dox6ujk8nECI5z6dqpHJZE4OHPp2VFxcnHv+vKmJibOTI7U5PBeLW7tyyCtrX/X8+m3DvuJ4ZqZimBUXF9M3mbGj3fLyLlJPKysrCYQ2hoZijAsLCgiEuNOnYYxvXL9OLXt5WRm56cnlcuqN585mC2NjFeeK3IMRCKWlpbV2iXBDdNH3S2tWrtRALHqmBgYEEAjFbN1K1ZA7f3qsCqOi2Wz2w+IHVM3xzEwen0//LFMTEw3ESqcdZJw6fqK7VvdkkYhx3oUxTvzpJwKhv9rQXa9ipsbFxHDsbHdu3+7s5IQxrq2taypT372r0UCs3r17K740dvTo/kZGtbV1VE1lZWXv3r3pmWphbqarq0v/G2OMd+3YQSB0oeHwak9CgmbXroyJH0pLozatmpoaAqHJEyfQG8gxdrC3I+e//Tk7OXbt1u3x48dUjUwms7cdEtS4C25nfLwGYgUGBCidSM+ePQf07y+TNVo5mUeOEAgl7v8ZYyyprSUQ6m9kJKPtZcrKynr37k3P1GMZGc1nqviZmEBopscMegOZTOZgb7dmxQp65b27dwmEzmdnf2gFNClqy2YCoZzGU6h480aza9fExER6JX2x7965O2igaXLyb/QGw4c5k8d8FD09vaaOu5W6mp/fhcUi9x2K5WJeXssn1fnI5fIvv/5K6Zphs9llZeUtnxSZqUmN/76rg1dQp32U/kZGPb7oUfzgAVbAc59OIFRa+ppR7zNzJtWzRV4tK218lWrq5EmtzdT+RkYWZmb08MYYX750SfHAwtLCYmdCguLcthyZqX807kD2pqWRouvXCmd6eNBzt7Kykjoqrauro1ZsXV0ddflw2eLFBEKKqe/qMlLxEsyG9evJTeOCSndh6euz7Wxs5I0rp06eRM9UC3Mz39k+jDcKo6Loh9cHfvlFsfPp9s1b1ONTx48TCImSfmO0WbNqlSglhTr3oJw+dYpAKDPjaKsWh07FTN0ZH29pbp4mSu7xRQ+M8evXrwmEXtC6LimmA02trSxvXb/BqCdHOXnweYz6iePHUZkql8sRizXDw4PRJnLLVgKh7Q1HTyVPS/TYeu5croh2JPKq9O/NJvf8eQKhAz//zJhObW1ttcJxSvtwdnKcMO47RuXq4BWMbNsZH884BaeUlZUTCEVtUTKq8Muvvhw3dgzG+HRWFoFQXAzzkHbi+HGtytR0kYhAqODKFUYbiURS27jzhByjVPygWOk8t8TY0W6KMxMVGYlYLMY14K1bI0eMGKGvzzYxNp7p5UUgFLx8Ob3B8GHOjMuE1laWBw8datX8VFZWljXQ09PzmsGnnrZqOp2SRCJRy8oJCwkxHWjKqHz65AmBUEZGBr2yv5HRwSZOjGysrZUmza+JidTEB1tZ+c6ezWiwd/fuVmVqdXU1gdD/aH02FMUFt7SwyD6r+iEmbshURuX8uXMZNadOnnLncr/48gsTY2O/2bMJhOgLVVlZST2VyWT0l1DDPV1jR7spXld2cnTU0tZWetHkzq1bOdmq3H9VdP8+gdDlS5cY9Xt376Y+iLzxjPmJd+/q6urS14ZUKp3l5Um/4FXU+HgrPDRU8atFqq+vV6yUy+U89+mIxbp9506LF6gRFTM1+X8HdHV16+vqHOztooUxQUHBml27Zv95lt6mRiKxG2KDWKz+RkaKp7Bv31bSc5GyZOFCeqZ2YbHMzcw2hW9klJjIyJcv/o7wioqKrRGb/Gb7TJsyefx3Y0cMc6Zfc90UFkYgdP1aoWoLS8k8cnjc2DFKiwePK1X2F2qKs5PjcoWzz1WtydSXL14QCOUpG0qgraNjazMYY/zTf/cSCOVfvsxoMH7cdx/MVG2dvzOVXIHv3n14NG9Dpio5jWihMW6uGogVFhLC+ItHbt5MDR2/eeMmgdBQR4drhe//plKp1NbG5mNkKp0eW+9Ky4avfyTFD4oNDQz6KnMht70HlTC0ZeWEhYQo7s3JbzijX4HR8UBnazM4/eBBxfqff/qJ+npbmJsdaRzSGOPdCQnKMvU4vWbq5ElUpr4pL9dArBaO5rW0sMg+e/bD7ZrWkkwdOfzbr3p+feCXX6iaFYGBrc3Upja9LRER9B61trt86ZLSq4G7ExLomdrMzp/xxuSkpEULFvDcp08cPy5g6VL6WfWmsLDWXvTlTpuqgVgGBgY5KvW3qZiply7kEgiRXR/37t6trKy8cjm/VuF6L8b43NlslqbmIYUdmVwu19LWWjh/PqPezXUUve/XbNAgC3Mzev+wUorjgTl2duvWrqPmQQOxfmi4rvYpcHZynDFjBqPS1mYw43cAmslUjLG+PnvPHuZPN5DXtmd6eGCMT586SSBE77PCGMvlcl1dXXqmnsnKYnzF376t1EAsKlPJFdiSAzfxs2cEQnduq3iIhzFe4u+v2PfL4DJiOIHQkydPqBq5XG5oYNAOmaryezu9tqwcpZl6YP9+AqG8C4062JvJVEZvJ4XsEyYfTxw/TvGUa9KE8YxPnzRhPCPL7W2H0LejgaamFy8yT7OUGmxl9UfWHy1p2ZQPZirZf7sjLo7ewNvLs7WZSg7pUC1IWkUikWhpaynWT5ownv7XMRs0yG/27OZ3/hKJJC01tb6+USf8aBcX6vG5s9mC1twx/+5dDZvN5rdhHLiKmSqXy3v27HmtoEVnfmYDBypeF8EY+/r4MK5/XLt2jTFGaWvEJsXBKQzhoSFDhw6l10il0n6GhoJly6ia78aM1tdn3qKTmpbGuALXbpydHNlsNn2gb/bZbMaoB4zxrh07msnUsJAQxZUzx89PS1ubHL8jk0ptbWwYbaKjohljlB49fMi4JWuOnx+BEH2M0ndjRit+NYOCgm7caNSrX1dXp6Wtdeb06abmmRQRFkZeeEtV6McrLirS1tF5ruw6AoX+YwWkX3/99SP1/dL169dP5fd2em1ZOWEhIWw2m35k/Kq0tF+/fn379qVf8ZLL5c1k6rXCwuHDhzMqL+TkaCCWT8NQ+cwjRxwdHekNUpN/UxyjtGzJEvrOnezvoWdq/LZtipvDuexsxVCfMG7cB0fxyDHu2q0bo7eW0pLzVMZeIuvUqS4sVmsztbioaITCCmzKq1ev3Llcdy73kUqnsL4+Pox15cHjMsYobY3Y9MFb6Zb6+zPalJaW9jM0pNfwpk9jvKuqqmpDaOjTkmeMwSgY4yOHDhEIXb92rYULokj131FaERg4bJhzS1raWFsrPdOvra11dRnJZrOTRaKc3NxoYcxw56EcO1sCIfrWtXD+fB6PR9WIUlL4fL6ry0jxs/fX0skdtDuXS43uW7lylbaOzhVan2fFmzeuLiM5HE5Obi7GOCc318HBYfgw5zu3b6u09G3l7OTIsbPz5PNEKSnJIlG0MKYLizV96pT6uvcHZffvF1G3pjRzu86yxYv5fD65csTiF+5crp6e3sGGH5XFGFdWVrq6jHTncsmVHCAQWFlacOxsGUFLH6YRGxfLmz798+7d6V/6N+Xlri4jAwQC8hssjI3V19cfPsxZcUTDisBALpeHMRaLxdHCGEcnR5cRzA114fz5ZKY62tsrLlRqcvKggQOpIf5paWnuXK7ZoEF//vH+eL+woKBv375kg9wLFwIEAgd7O5eRI+gLdfRoJoEQvWbbtm0EQm0Z/U+NSgWK2rJyyDFK4SEh6enp5OZAIGRhblbQ0JlcW1uXmpr6wc3hYGqqn6/v9YbjvPj4HQRCw4Y60YM5PDSUz+eTm4NAINDpoTNtymTG5vBcLLa2tCS/6nFxcX379BlsZcX45qxdtTooKIhsk5CQMHDgwM8+/1zxJ3hOn8qaNWsWxlgsFgtjYzkcjqmJieKcm5qYkFuEYkQhTU0CISo55HL5Z59/zpjhiA0bBMuXY4zz8i4KBIJevXr5zfah2jx58gRpapJPL+ZdxBjTb0Aib08ipSYn+3h7k5/14sXLhIQEDofzVc+vFe84D/l+LYGQlraWYiy1RE1NjavLyGhhTE5ODnnTka6u7rQpkxkrOVggyGkYA3X06FHB8uWGhoauLiOpBkGC5Ww2m9pXXL9xQ6eHDn2JMMZvysu9ZvDJKYvF4uXLAwmEDAwMlN6euychgeiQ+1MxxnK5nM/lCgTLS0qe5eTmnjhxoqmW9rZDlGYqKXH/z3N8fX19fHbFx0ul0uOZmcKo6L2N+2kvX7q0IjBwlqfn4oWLorduLXn6lPFqeGhoekrKmlWr/Gb7LJg7Nzw09JWyQciH09P9Fyz09vJaGRSk2tV1dXF2chw/dgzG+Mb167vi43fFx9+6eZPe4FBamjAqmlESf/pJcVI3rl9fs2qVt5en32yf2JgYpaOuWrKS9+3du9Tff8P69eRFygO//CKMir7b+JijhSvw1PETwYGByxYvFkZFU7c60Eml0m1C4dpVq/96zRylSXpTXh65ebOvt/ccX9/QdetOn2LeNS+VSrfHxvr6+CyYNy81ORljXFxUFBsTsys+nmxwMDWVXGlpDV0Re3fvJmtONb5UBjoceZ5aVlb2prw8cf/+bULh70eP0u8MqXn3bldCAmNz+GHnTsVJVVdVxcbEzJszZ6aHx+KFi+jHl5RLeXnLlizx9vJct2bNk8ePHz18JIyKjm08lO/169cRGzb4L1i4PTb2XXX1hdxcYVR0duMOmDu3bq1ZudLby2uOr++m8I2lpcp/9ObRw0fhoaH+CxZuWL/+XBPjlR49fLR21eptQqHi4pALHhsTQw1ooL7J9JYnfz+2eOGi2bNmxURGVldVSqXS3QkJsTExVVVVZWVlu+LjhVHRu+PjyYE5oqTfqOXNOHyYvuzUpuft5RUcGLj/x311dUp6X8mxhKKkJKWL00L0/ZJEIiH/EMcaX/BufudfdO9+wJKlxzIytkZsWjBv3n/8/MJDQ2uUXYWk77sOp6cz7iWh7IyPJxBSvG+15dr6f2kKrlzZFR+fdOBAzbt3TbVxG+XSTKb+Ozk7OTLuQgHgX4u8ntrUbg58gnR1dbt26yZrfDdRJ7B540aWpmZbvort8b/eyPujxa2/2bmzev36tZWlRcCSJR09IwB0PIlE4uvt/fF+cReoHTlwlz7MuNNwdHR0dnL8cLumtUemymTy8NBQJweO/8KF7fBxn7gaiSRAICAv9ZGXhf5qzd3xAHQyP+/bR98c4De9/xF+TUxU7UrqJ+vihQuO9vYTx4972IZbATH8T/IOUVxcXHDlClkKCwrq6z9wpxAAnZhEIiksKKC2iKqqzvlPjcC/xIcz9fnzF4q/F9+qH3gDAAAA/onI/w7CKEVNn8t+OFNTfktS/D1PPT24+R0AAEAnN9TRQTEBFX/wlQKZCgAAACgHmQoAAACoB2QqAAAAoB6QqQAAAIB6tFOm9uzZU62zDQAAAHxyhgy2bo9Mpf+SNRQoUKBAgdIpi9L4+yiZCgUKFChQoPwLC2QqFChQoECBop4StWWL6pma/L8DHb4AUKBAgQIFyidSNoWHw3kqFChQoECBooYSGxUFmQoFChQoUKCooaj/eipLU3OwlSUUKFCgQIHSiYuWtnZ7ZCr85gMAAIBOD35HCQAAAFAPyFQAAABAPSBTAQAAAPWATAUAAADUAzIVAAAAUA/1Z+rlixe9ZvAZZcG8eWqdbQAAAOCTs/777xUT8NTx35tq/+FMBQAAAEBLQKYCAAAA6gGZCgAAAKgHZCoAAACgHpCpAAAAgHpApgIAAADqAZkKAAAAqAdkKgAAAKAekKkAAACAekCmAgAAAOoBmQoAAACoB2QqAAAAoB6QqQAAAIB6QKYCAAAA6gGZCgAAAKgHZCoAAACgHpCpAAAAgHpApgIAAADqAZkKAAAAqAdkKgD/SJGbt+zatauj5wIA0AhkKgD/SDU1NRKJpKPnAgDQCGQqAAAAoB6QqQC8dzHvIo/Hc+dyAwSCwsJCsrLkaclsH5+UlBSqWfz27Vwur6ysXFpf787lPnz4KCI83J3LdedyDx8+TDXbLhRGC2OKHzzw8/WNFsY08xEYY5lUunXzFncul8vluXO5YrGYeun2rVs+3t7k9JcHBlL1jL7fwwcP8vl8slle3kWq/vzZs9HCmLLy8nVr15KvXr6cr7ZVBgBoDDIVAIwxFkZFdu3WLWLDhuKiouSkJEMDg4yMDPKlnOxzJsbGL168xBhfzc/vwmItXbQIY/yuuppAqAuLJVi27FlJyelTWZbm5jt37iTfNdPDg81m6/TQ4blPP5ZxBGM8x8enqY/gTpv6zYABt2/elEgk585mO9jbi8UvMMa1tbXdtbpzp097+/Zt6atXS/z9HRwcyLdMnzrFd/Zs8vGYUaM0EGvxwkXPxeJnJSV8d/dkkYh8KXH/zwRCWtram8I3XissjImMRJqad+7ebZ+1CsC/DWQqAPjt27eIxQoKCKBqDqamstls6qkwKsqdyy0sKDA1MeHY2ZKVZKZ+N9qNanby92MEQlVVVRjjmR4eBEKxUVHkS08eP0Es1trVq5V+hImxcXRUNPVSTva5jEOHMcZ/nj5Dnw2ZTCZYtqyysgrTMvXJkycEQpGbt1DNpFJpnz765GMyU0PWrqVeHerosDkiQrUVBQBoHmQqAPj3jAwCoQcPHlA1oqRfNRDrWsHf3bNj3FzZbDbS1CQjDTdk6rnsbPqkdHro5F++jBsylarfJhTS05HxEXP9/Nhs9tWrV8mXqMFHEonE1MREGBtLPq2vr6feTmVq6Nq1BEL0lzDGY0e7HTlyBGOcuP9nxud+N2b0gnnzWr5yAAAtB5kKAA75fi2B0KCBpoOtLOnl9u3bVJu1q1YTCK1bu46qITP1XuN+1F69el3IvYAxnunh4c7ltvwjhFFRI4d/q6Wt7c7l0i/fPheLFy9cZG1laWZmFiAQFBQUkPVUpi6YN08DsRhLNH7cd1Sm0mcDQ6YC8DFBpgKAd8TFEQhlnzlDrywvK5fJ5OTjF89fdNfqbmNtzeXxqAZkpt64dp2qkUmlXVisgqtXsUKm7oiLY7PZzXyEXC7HGNfX1586foLv7h4gEJD11Anoq5cvt0REfPb55/fu3ce0TI3YsIFxJooxtrG2zsrKwpCpALQvyFQAsPiZmKWpWVZWTtVcv1bozuVWVFSQTzl2tgNNTZ8+eeo5gy9qOIkkM/XkyZPUu0RJvxIIPReLsUKmFhcXDx3qRP9Q6iPq6+t5fD7VpYwxLiwoYLPZpaWvjx4+JKKds2KMrSwt9uzahWmZmpeT04XFKi19TbW5d+dOFxbrxvXrGDIVgPYFmQoAxhgvmDePyp5Hjx5/9vnnri4jyafcaVMJhIqKijDGFRUV/QwNyXGzZKYaGRmReXb1yhWWpqaTA4d8FyNTyY8ICQ1V+hFjR7utXLmSfFxdXW1rY+M6apRMJn9WUjLKxYUccowxPnn8uAZi3bp5Ezce9zttymTqs+7fv29ibGxlYUE+hUwFoD1BpgLwXsj3a42/+cba2qq/kdFcP7+6ujqM8d07d91GuQiWLKGapYlEbqNccEOmLvH3nzp5kq6ubt++fWd6eEhqashmm8I30kfbNvMRGOPnYvGkCePt7Ow2hIXr6ekNH+YsLikhXzqUlmZvOyQ8fONoN1ezQYNiIiPJ+tB16yI3byYf19TUrA5eYWlh4eHh8VXPr8eOdnv9+v1pa9bJk4zZWBkUFBcTo7a1BgCggUwFQEVkpmYcPtTRMwIA+FRApgKgIjJTb9261dEzAgD4VECmAqAiyFQAAANkKgAqkslkh9PT372r6egZAQB8KiBTAVARZCoAgAEyFQAAAFAPyFQAAABAPSBTAQAAAPX4fyH7BlyXyk27AAAAAElFTkSuQmCC" alt="" width="420" height="59" />

4. 注解

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMoAAAAdCAIAAABkPGRoAAADfUlEQVR4nO2YMY7qMBCGU0Ry65zAB3DqiDqhBmoEfSQfIJIvgJQTbMENkOAESBScATqusHTbvuLXG/nZwWTZ9T7pvZF+IctyPPb488yY7P7+wWIlUvbXV8D6h8V4sRKK8WIlFOPFSijGi5VQjBcroZLjtd8dciFyIfa7w6MxpjW5EF+3tX3b5kJs37Z/3a0sKLu/f+x3h2nd5ELIQk7rxuNgvzvIQo6ZSxYSJLnCbPFTN60ZaSIuoBzh+P/R6Xie1s13zTbIgIuNac3gh9npeFZK0ZH0m14WEihcLzfTGoQEtOOLIIYiDdbPCKf29XkeMeBhM62bftOHn2eL2dx29nq5lVpPqmpaN9u3ban1/f2j3/ReKLpebpGlxPEyrQHsSinbWXxCqdO7HHQzciGmdSML+TQmUez0RvabvtSaYvPTMNlvegzLhSi1HhMLH5lw+9fLFa1TFnJSVbj0aNjOYr9hP76yncVUSimcMVyHwUqpXAgyQV4lPQ0Nka0NMuBio5RaL1dgxsdLFvJ6uWE0RTkX/ElVfXZ9YaxyQ+h6ufLOOLxqWDHaqMxGBj9v5Ol4zoXAxcI2n97pftOb1sCJ6+VKKRUf7/rNNeH273cH3F7aLKzkQtjOUm0AP4f9pjWl1tgFpoJzMBXqGa8w+K7o9YgBD5tH5jL0YnQuxOl4vl5udPzYKn7H1zSDeFFPuJSwp9S61Hoxm8PddN4v4IVQsV6uaKr4DG7gRAyLj5eFdPMCZZCwHz6kzYYNLD7sD4taHJDnt7iTX9YgAx42+B3ASymFK+7m18VsTk6BjyhK/wxepjW4vkipspCn4/kF09gOCdRGPgeOhOCYQ3JTWBy7r+A1WNn8DF6DDHjYoKIYwMt2djGbIwsgsI8/y3R4Ucy//07/r+GFmdfL1chk5yZT5Kanh+QlR6R+YB1Jjp/CC9UVpXjaRQQv5ErayKSq3OSDMm4Q2ZFysUGwH7xjGYaiNkQeMa15+W2PEEolOToptlNhQeGd0lD+5x8ZqJGxKio7Rtp1i1m8qKlUD/92GXQc7E7rxnY2D54dobzS3n2GUz3u1d0Y5jVQ9Yf9RJhrwnsVhS8b2kiptVcSLGbzMa+lkY5CYBqsXvhfe1ZCMV6shGK8WAnFeLESivFiJRTjxUooxouVUIwXK6EYL1ZCMV6shGK8WAnFeLESivFiJdQvooAgDYy8Kn4AAAAASUVORK5CYII=" alt="" width="161" height="23" /> 和 aaarticlea/png;base64,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" alt="" width="237" height="68" />

  • 应该尽量避免如1,2所示的复杂的表达式
  • Scala代码格式参见: http://docs.scala-lang.org/style/scaladoc.html

三、模板的基本功能说明

1、模板参数

@* general template parameters*@
@(customer: models.Customer, orders: List[models.Order])
@* default values for parameters*@
@(title: String = "Home")
@* several parameter groups *@
@(title:String)(body: Html)

模板参数应写在template的最开头

2. Iterating

  • 一般List的循环结构见上(略)
  • Map的循环
@(eanMap: Map[Long, Product])
......
<dl>
@for((ean, product) <- eanMap) {
<dt>
<a href="@routes.Products.show(ean)">
@ean - @product.name
</a>
</dt>
<dd>@product.description</dd>
}
</dl>
......
  • Set的循环
@(products: Set[Product])
......
<dl>
@for((product, i) <- products.zipWithIndex) {
<dt>
<a href="@routes.Products.show(product.ean)">
Product @i - @product.name
</a>
</dt>
<dd>@product.description</dd>
}
</dl>
......

3. reusable blocks

@display(product: models.Product) = {
@product.getName() ($@product.getPrice())
} <ul>
@for(product <- products) {
@display(product) <!--调用display -->
}
</ul>

还可以写成pure code blocks(不知道该如何翻译~~~)

@title(text: String) = @{
text.split(' ').map(_.capitalize).mkString(" ")
}
<h1>@title("hello world")</h1>

4. reusable values

@defining(user.getFirstName() + " " + user.getLastName()) { fullName =>
<div>Hello @fullName</div>
}

使用@defining()

四、模板的模块化

aaarticlea/png;base64,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" alt="" />

main.scala.html

@(title: String = "Paperclips")(content: Html)  <!-- New parameter 'content' -->
<!DOCTYPE html>
<html>
<head>
<title>paperclips.example.com</title>
<link href="@routes.Assets.at("stylesheets/main.css")" rel="stylesheet">
</head>
<body>
<div id="header">
<h1>Products</h1>
</div>
@navigation <!--Navigation template -->
<div id="content">
@content <!--Page content must be inserted here -->
</div>
<footer>
<p>Copyright ©2012 paperclips.example.com</p>
</footer>
</body>
</html>

view.scala.html

@(products: Seq[Product])
@main("Products") { <!--call main template -->
<h2>Products</h2>
<ul class="products">
@for(product <- products) {
<li>
<h3>@product.name</h3>
<p class="description">@product.description</p>
</li>
}
</ul>
}

调用:  views.html.render(content)

navigation.scala.html

@()
<nav class="navbar navbar-inverse navbar-fixed-top" id="navigation">
<div class="navbar-inner">
<div class="container">
<a class="brand" href="@routes.Products.index()">Products Catalog</a>
<ul class="nav">
<li><a href="@routes.Products.index()">Home</a></li>
<li><a href="@routes.Products.list()">Products</a></li>
<li><a href="">Contact</a></li>
</ul></div>
</div>
</nav>

五、Message的使用和国际化(internationalization)

1. 国际化(internationalization)

在conf/application.conf中设置

application.langs="en,en-US,fr"

2. Message

1)messages files文件所在位置——conf/messages.xxx
如果有不同的语言,其文件名分别为conf/messages.fr或conf/messages.en-US

2)定义Message——使用play.i18n.Messages object对象
 String title = Messages.get("home.title")
 也可以指定语言:
 String title = Messages.get(new Lang(Lang.forCode("fr")), "home.title")

3)在模板templates文件中如何使用
   @import play.i18n._
   @Messages.get("key")

4)Message的格式化方法

conf/messages.en的格式化 调用 输出
files.summary=The disk {1} contains {0} file(s)  Messages.get("files.summary", d.files.length, d.name)  
shop.basketcount=Your cart {0,choice,0#is empty|1#has one item|1< has {0} items}  <p>@Messages("shop.basketcount", 0)</p>
<p>@Messages("shop.basketcount", 1)</p>
<p>@Messages("shop.basketcount", 10)</p>
Your cart is empty.
Your cart has one item.
Your cart has 10 items.

5)Retrieving supported languages from an HTTP request

public static Result index() {
return ok(request().acceptLanguages());
}

参考:http://www.playframework.com/documentation/2.2.x/JavaTemplates

《Play for Java》学习笔记(三)template+Message的更多相关文章

  1. Java学习笔记三十一:Java 包(package)

    Java 包(package) 一:包的作用: 如果我们在使用eclipse等工具创建Java工程的时候,经常会创建包,那么,这个包是什么呢. 为了更好地组织类,Java 提供了包机制,用于区别类名的 ...

  2. Java学习笔记三十:Java小项目之租车系统

    Java小项目之租车系统 一:项目背景介绍: 根据所学知识,编写一个控制台版的“呱呱租车系统” 功能: 1.展示所有可租车辆: 2.选择车型.租车量: 3.展示租车清单,包含:总金额.总载货量以及其车 ...

  3. Java学习笔记三:Java的变量、常量、变量的类型及使用规则

    Java的变量.常量.变量的类型及使用规则 每一种语言都有一些具有特殊用途的词,Java也不例外,它们被称为关键字.关键字对 Java 的编译器有着特殊的意义. 一:Java中的关键字: 注:Java ...

  4. Java学习笔记三.3

    9.异常处理:Java中的异常处理对象就是将以前的if语句进行的判断进行抽象化,并形成的一套错误处理体系.最顶端是Throwable,接着是Error,Exception,其中Exception又明显 ...

  5. Java学习笔记三.2

    5.继承 //Java中所有对象都显式/隐式的继承子Object类 class fu{ fu(){ System.out.println("fu..."+getNum()); sh ...

  6. Java学习笔记三——数据类型

    前言 Java是强类型(strongly typed)语言,强类型包含两方面的含义: 所有的变量必须先声明后使用: 指定类型的变量只能接受预支匹配的值. 这意味着每一个变量和表达式都有一个在编译时就确 ...

  7. Java学习笔记三---unable to launch

    环境配置好后,在eclipse下编写HelloWorld程序: ①创建新工程 ②创建.java文件,命名为HelloWorld ③在源文件中添加main方法,代码如下: public void mai ...

  8. Java 学习笔记 (三) Java 日期类型

    以下内容摘自:  https://www.cnblogs.com/crazylqy/p/4172324.html import java.sql.Timestamp; import java.text ...

  9. Java学习笔记三:运算符

    1.算术运算符: GitHub代码练习地址:https://github.com/Neo-ML/JavaPractice/blob/master/OperPrac01.java +  -  *  /  ...

  10. Java学习笔记三

    1.面向过程思想,强调的是过程(即动作,函数):面向对象思想,强调的是对象. 2.类与对象关系:类是对事物的描述(属性和行为-方法),对象是类的实例.对象通过new生成.属性也称成员变量;方法也称成员 ...

随机推荐

  1. CUBRID学习笔记 2 安装教程

    下载地址  http://www.cubrid.org/?mid=downloads&item=any&os=detect&cubrid=9.3.0 选择适合你的服务器版本 l ...

  2. poj 1502 最短路+坑爹题意

    链接:http://poj.org/problem?id=1502 MPI Maelstrom Time Limit: 1000MS   Memory Limit: 10000K Total Subm ...

  3. POJ 3253 Fence Repair(修篱笆)

    POJ 3253 Fence Repair(修篱笆) Time Limit: 2000MS   Memory Limit: 65536K [Description] [题目描述] Farmer Joh ...

  4. run a Freight robot (1)

    1. Freight robot The Fetch and Freight Research Edition Robots are indoor laboratory robots. Coordin ...

  5. Fiddler界面详解

    Statistics 页签 完整页签如下图: Statistics 页签显示当前用户选择的 Sessions 的汇总信息,包括:选择的 Sessions 总数.发送字节数.接收字节数.响应类型的汇总表 ...

  6. POJ3009 Curling

    题目链接:http://poj.org/problem?id=3009 题意:从2出发,要到达3, 0可以通过,碰到1要停止,并且1处要变成0, 并且从起点开始沿着一个方向要一直前进,直至碰到1(或者 ...

  7. Perl5中19个最重要的文件系统工具

    在写脚本处理文件系统时,经常需要加载很多模块.其中好多有用函数分散在各种不同的模块中.它们有些是Perl的内置函数,有些是在同Perl一起发行的标准模块中,另外一些是通过CPAN安装的. 下面来看15 ...

  8. 2013 Multi-University Training Contest 6

    HDU-4655 Cut Pieces 题意:有N个格子能够被涂色,每个格子能够涂1-ai 种颜色,当N=6,涂色方案:112233 认为方案中共有3个颜色块:涂色方案:121212 认为方案中共有6 ...

  9. web设计经验<二>设计华丽的用户体验的6个热门技巧

    你是否曾经下载了一个应用,却发现它“很难使用”?对于大多数智能手机用户来说,答案是肯定的. 有趣的是,每四个手机应用中就有一个应用在下载后被“打入冷宫”. 如果一个应用能够吸引一个人下载并且打开它,但 ...

  10. Linux设备模型(总线、设备、驱动程序和类)

    Linux设备驱动程序学习(13) -Linux设备模型(总线.设备.驱动程序和类)[转] 文章的例子和实验使用<LDD3>所配的lddbus模块(稍作修改). 提示:在学习这部分内容是一 ...