我对 Tapestry 页面和模板有疑问。
用户发送请求以获取页面。我知道该请求来自移动设备或桌面设备。我想以不同的布局显示请求的页面。
例如:
如果请求来自移动设备,我想加载mobileLayout.tml和pages/mobile/index.tml,index.tml有t:type="mobilelayout"。
如果它来自桌面设备,我想加载layout.tml和pages/index.tml,index.tml有t:type="layout"。
示例:
仅针对桌面设备显示页面pages/index.tml。
仅针对移动设备显示页面pages/mobile/index.tml。
- 请求的页面:/index
- 设备:电话
我想加载mobileLayout和pages/mobile/index.tml
请求的页面:/index
- 设备:桌面
- 我想加载layout.tml和pages/index.tml
基本上,对于移动设备,我想从页面/移动设备获取内容,否则从页面/获取内容。
Tapestry5(5.3.6) 中可能存在类似的情况吗?
我尝试过类似下面的方法,但没有成功:
LayoutLoader.tml - 在那里我识别出请求来自哪里。
<t:delegate to="layout" />
<t:block t:id="mobileLayout">
<t:mobileLayout />
</t:block>
<t:block t:id="desktopLayout">
<t:layout />
</t:block>
组件/Layout.tml
<body t:type="layoutloader">...</body>
组件/MobileLayout.tml
<body t:type="layoutloader">...</body>
页面/Index.tml
<div t:type="layout">...</div>
pages/mobile/Index.tml
<div t:type="mobileLayout">...</div>
最佳答案
您可能会发现 Igor 的博客文章很有趣 http://blog.tapestry5.de/index.php/2011/06/24/template-skinning/
关于Java Tapestry5动态布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15661183/