2008年9月11日木曜日

S2JDBC - SAStruts - JSON - jQuery

スズキです。

今までは、"Java - JSON - jQuery"を実現するのに、
Teeda(Ajax) を使っていました。でも、そろそろ飽きてきて、
さらに、SAStrutsもやらなきゃなーという思いから、

S2JDBC - SAStruts - JSON - jQuery

のデータの流れを試してみました。
というか、要はSAStrutsでいかに気持ちよく
JSONを出力できるか?を試してみました。

ポイントはJSONICです。
http://jsonic.sourceforge.jp/
このJSON#encodeを利用するとあっさりできました。

以前、JSON-libを紹介しましたが
http://suz-lab.blogspot.com/2008/01/json-libxmljson.html
JavaオブジェクトをJSON形式にエンコードなら、
こっちのほうがお手軽です。

で、実際のサンプルは下記のようになります。
(僕的には気持ちいいです)

public class JsonAction {
  @Binding
  private HttpServletResponse response;
  @Binding
  private JdbcManager jdbcManager;
  @Execute(validator = false)
  public String select() throws IOException {
    String sql = "json/select.sql";
    List<BeanMap> list = this.jdbcManager
      .selectBySqlFile(BeanMap.class, sql)
      .getResultList();
    this.response.setContentType("text/javascript");
    this.response.setCharacterEncoding("UTF-8");
    this.response.getWriter().write(JSON.encode(list));
    return null;
  }
}
※setCharacterEncodingしないとJSONが文字化けします。

このJSONは、"ajax/select"(URL)で取得できるので、
このURLをjQueryの$.getJSONの引数に指定すれば、
あとは、Javascript(jQuery)のお話です。

もう少しこなれれば、SAStrutsとTeedaの
自分なりの住み分けが定義できそうです。

--
http://suz-lab.blogspot.com/

0 コメント: