3

Stuts2では、Tilesプラグインを使用して、すべてのページで一貫性のあるWebサイトのレイアウト(メニュー、フッター、ヘッダーなど)を作成しています。

これで、各タイルは単なる静的HTMLコンテンツになります。

たとえば、タイルをより動的にすることは可能ですか。Footerフッターがレンダリングされるたびにアクションクラスを呼び出しますか?例:データベースからフッターコンテンツをフェッチします。

アプリケーションのすべてのページのアクションクラス内でこれを行うと、非常に使用できないコードになります...

それで、タイルの観点からそれは可能でしょうか?

4

2 に答える 2

2

次のコードを試してください。

$('#footer').load('your/action/with/namespace');

私はあなたfooterがIDを持っていると仮定していますfooter。ページを開くたびに、フッターアクションクラスが呼び出され、データを動的にフェッチできます。

于 2013-01-12T11:02:44.903 に答える
2

2.2.2未満のタイルバージョンで要求することを行う唯一の方法があり、それは「準備者」を使用することです。

ただし、これはstruts2との統合ではありませんが、作成者自身がサービスレイヤーにアクセスしてビューに必要なコンテンツを取得し、そのすべてのコンテンツをタイル属性を介して設定する必要があることを意味します。

タイルバージョン2.2.2以降の場合:タイル属性内でOGNL式を使用できます。これにより、一部のstruts2インタラクションへのアクセスと、静的メソッドアクセスが可能になります。静的メソッドアクセスを使用すると、メソッドを呼び出して、必要に応じて文字列を返すことができます。このような文字列の作成は、スクリプトレットの作成と同等です。

アップグレードするには、いくつかのjarを手動でオーバーライドして、タイル2.2.2を取得するか、バージョン3を取得するために、独自の結果タイプを実装する必要があります。Struts2をTiles3と統合する方法


現時点では、上記のいずれの方法も実際にはお勧めしません。タイル3をお勧めしますが、スクリプトレットを作成するほど悪いことをする言い訳にはなりません。Davidが述べたようにタイルでs:actionタグを使用するか、Jaiwo99が述べたようにAjaxメソッドを使用する方がおそらく良いでしょう。その理由は、これらの方法は両方ともstruts2に対応しているのに対し、私が提示した方法は珍しく、保守が難しいためです。個人的には、ajaxメソッドに傾倒します。

Struts2とstruts2-json-pluginを使用すると、jsonサービスの作成が非常に簡単になります。タイルはボイラープレートを減らすための素晴らしいシステムです。ajaxを多用すると、2つは実際に互いに補完し合うことができます。多くの再利用可能なajaxコンポーネントを作成できますが、アクションのURLをハードコーディングしないように注意してください。常にs:urlタグを使用し、それをJS変数に割り当てます。

于 2013-01-12T21:03:18.977 に答える