Request, Response and ServletContext


HttpServletRequest, HttpServletResponse と ServletContext は Controller のフィールドに格納されています。 それとは別に、以下のように RequestLocator.get(), ResponseLocator.get() や ServletContextLocator.get() を使って参照することもできます:

HttpServletRequest request = RequestLocator.get();
HttpServletResponse response = ResponseLocator.get();
ServletContext servletContext = ServletContextLocator.get();


Requestパラメータは RequestHandler によってRequestのAttributeにコピーされます。これは、JSPのようなビューから便利にアクセスできるようにするためです。
注意: パラメータ名が"Array"で終わっている場合、Stringの配列としてコピーされます。

Controller はRequestのAttributeにアクセスするためにasString(), asShort(), asInteger(), asLong(), asFloat(), asDouble(), asBoolean(), asDate() and asKey()のような便利なメソッドを沢山持っています。

// the argument is a attribute name
Key key = asKey("key");
Long version = asLong("version");


モデルに保存されているAttributeを扱う場合は、モデルのメタデータ を使ってタイプセーフにAttribute名を指定することができます。

XxxMeta meta = XxxMeta().get();
Key key = asKey(meta.key);
Long version = asLong(meta.version);


次のように BeanUtil#copy() を使って、RequestのAttributeをモデルにコピーすることができます。

Blog blog = new Blog();
BeanUtil.copy(request, blog);



Next...

ファイルアップロード に続く

Comments