2012-03-29 12 views
0

私は単純なサーブレットとMVCパターンでアプリケーションを構築しています。私はSpringのようなフレームワークを使用していません。サーブレット/ MVCのモデルを表示

は、私はこのようないくつかのモデルクラスを持っている:

public class BlogPost { 

private List<Comment> _comments; 

// Things 
} 

public class Comment { 
// Code 
} 

投稿

は、そのコレクションでそれらに関連したゼロまたはそれ以上のコメントを持つことができます。

しかし、ビューに渡される前にBlogPostモデルに追加情報を添付したいと思います。つまり、ユーザーがBlogPostにコメントを付けると、Cookieに設定した値です。厳密に言えば、これはBlogPostモデル自体の一部ではありません。関連性のない偶発的な情報ですが、BlogPostクラスに追加するか、これを抽象化するかもうちょっと。

だから、私はこの追加の値を処理するためにブログ投稿のクラスにフィールドを追加する必要があり、OR私は、JSPビューに渡される、この線に沿って「ビューモデル」を作る必要があります。

public class BlogPostView { 

public BlogPostView(BlogPost bp, String message) { 
    // Constructor stuff, save these to instance variables 
} 

public BlogPost getBlogPost() { /* ... */ } 
public String getMessage() { /* ... */ } 

} 

答えて

0

HashMapモデルを作成し、それを応答とともに渡して表示します。 model.put(、ブログを「ブログ」) model.put(「メッセージ」、「いくつかのメッセージ」)

1

ブログ投稿とクッキーのデータが無関係であれば、あなたの中にクッキーのデータを置くことは悪い考えでありますBlogPostクラス。 BlogPostクラスは、ブログ投稿と呼ばれるものを表す必要があります。他のデータを関連付けるのは混乱します。

ブログの投稿とクッキーのデータを1つのオブジェクトとしてビューに渡す必要があるのはなぜか分かりますが、ビューに渡すためのクラスを作成する2番目の方法は良いアイデアですか?あなたは生のサーブレットを使用している場合:

request.setAttribute("blogPost",blogPost); 
request.setAttribute("cookieData",cookieData); 

をモデルクラス(例えばSpring MVCのModelMap)の使用:

model.addAttribute("blogPost",blogPost); 
model.addAttribute("cookieData",cookieData); 

をあなたのビューでは、JSTLを使用して操作することができ、両方のデータにアクセスできるようになりますまたは他のタグライブラリ。

もし私に行方不明のものがあれば、もっと詳しく説明できますか?

+0

また、インスタンス変数にアンダースコアを付加しないでください。正しいJava命名規則ではありません。 :) –

+0

返事をありがとう、私はまた命名規則の事について知りませんでした。私はいくつかのJavaスタイルのガイドを見て、それに関するアドバイスをします。 – xingyu

関連する問題