レスポンシブ デザインが最適なソリューションであるという droggo の意見に同意します。
ただし、別の方法として、すべての webflow ユーザーを同じビューに移動させることもできますが、そのビュー自体の中で、g:layout taglib を独自の taglib でオーバーライドして、自分が実行中かどうかを判断できます。モバイル ユーザーかどうかに関係なく、適切なレイアウトを適用できます。
このコンテキストでは少し扱いが難しいかもしれませんが、Webflow 内だけでなく、アプリ全体で再利用可能なソリューションを提供し、モバイル固有のコードを 1 か所に保持します。
だからあなたのウェブフローで:
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 という名前の 2 つのレイアウト ファイルが作成されます。1 つは /layouts/mobileLayout 内に、もう 1 つは /layouts/desktopLayout 内にあります (ただし、これらが既存の構造と完全に一致しない場合があります)。
上記の taglib のコードは大まかなガイドに過ぎず、g:applyLayout が取る他のパラメーターを処理するには、強化が必要です。