我同意droggo是響應式設計的最佳解決方案。
但是,作爲替代方案,您可能會讓所有webflow用戶轉到相同的視圖,但在該視圖中,您可以使用自己的taglib覆蓋g:layout taglib,作爲移動用戶重新運行或不運行,因此可以應用適當的佈局。
在這種情況下它可能有點沉重,但它會給你一個解決方案,可以在整個應用程序中重用,而不僅僅是在webflow中,它將移動專用代碼保存在一個地方。
在你的Webflow
所以:
viewState{
String view = 'viewState'
[snip] The rest of your code goes here
render(view:view)
}
那麼你的觀點:
<myapp:applyLayout name="someWebflowLayout">
[snip] Your non-layout GSP code goes here
</myapp:applyLayout>
那麼你的taglib:
class MyAppTagLib {
static namespace = "myapp"
def applyLayout = { attrs, body ->
boolean mobileUser = false
[snip] some logic to determine if this is a mobile user or not goes here
if (mobileUser) {
attrs.name = "mobileLayout/${attrs.name}"
} else {
attrs.name = "desktopLayout/${attrs.name}"
}
out << g.applyLayout(attrs, body)
}
}
你會再有兩個叫someWebflowLayout佈局文件 - 一個內/佈局/ mobileLayout和一個內/佈局/桌面佈局(雖然我很欣賞這些可能不會動態匹配你現有的結構)
上面taglib中的代碼只是一個粗略的指導,它需要加強處理g:applyLayout需要的其他參數。
一種選擇是使用根據客戶端設備和分辨率進行不同呈現的響應頁面。以Twitter Boostrap和響應功能爲例。這可以用CSS來完成。 – droggo 2013-02-10 22:42:05