0

私はstruts(+ spring)MVCを学び始めたばかりで、この状況の説明を使用できます:

プレゼンテーション層にStrutsTilesを使用していますが、データベースのデータをいくつかのタイルで表示したいのですが、メインコンテンツタイルで完全なページが形成されます。これを行う適切な方法がわかりません。これは、MVCパターン/ベストプラクティスに適合します。

これらのタイルのコンテンツは、ユーザー入力に基づいていないデータベースからフェッチされます。たとえば、ショップに追加された最新の製品をいくつかリストしたタイルなどです。

私がしたこと:データベースにクエリを実行し、いくつかの最新製品のリストを返す静的メソッドを使用してクラス'A'を作成し、このタイルのjspに次のようなスクリプトレットを配置しました:
<%for each item in A.GetLastestProducts(); データの表示%>

しかし、私はこれを行うのは悪い方法だと言われています

誰かがこの状況を適切に処理する方法を教えてもらえますか?

ありがとう

4

1 に答える 1

1

ストラットを使用している場合は、JSPにストラットアーキテクチャを活用することをお勧めします。私はおそらくこれのようにそれを構築するでしょう:

public class MyStutsAction extends ActionSupport implements preparable{

    private List<MyNewProducts> newProducts;

    @Override
    public void prepare() throws Exception {
        if(products == null){
            products = MyNewProductsDAO.getProductList();
        }
    }

    //Struts action stuff

    public List<MyNewProducts> getNewProducts(){
        return newProducts;
    }

    public setNewProducts(List<MyNewProducts> newProdcuts){
        this.newProducts = newProducts;
    }

}

次に、JSPページから次のようにアクセスします。

<s:iterator value="newProducts" status="stat">
    <div> <s:property value="%{attributeName}" /> </div>
</s:iterator>

これにより、製品のリストを値スタックに保持することで不要なデータベース呼び出しを排除し、何らかの理由でnullの場合、prepareメソッドの条件付きでリストにデータを入力します。

于 2011-09-16T15:55:59.813 に答える