JavaのWebアプリケーション開発フレームワークによる、Webサイト開発の顛末記です。

EclipseのMavenを使った、Spring-MVC、Thymeleaf、MyBatis 等のプログラミングテクニックを、
備忘録的に記録しています。実際に動くソースコードを多用して説明していますので、
これからEclipseや、Spring-MVCを始めたいと思っている人にとって、少しでも参考になれば幸いです。
Spring-MVCの散歩道 > 応用の森(総合テクニック編) > ツリー階層構造表現

package jp.dip.arimodoki.cntl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import jp.dip.arimodoki.blogic.BlCreatureClassIf;
import jp.dip.arimodoki.common.CConst;
import jp.dip.arimodoki.common.JsonConvertIf;
import jp.dip.arimodoki.model.FormCreatureClassIf;
import jp.dip.arimodoki.model.dto.DtoTblClassIf;

/**
 * 生物分類ツリー
 */
@Scope("prototype")
@Controller
public class CreatureClass implements CConst {
    //JSON パーサー/ジェネレータクラスインスタンスを生成
    @Autowired
    private JsonConvertIf jsonConvert;

    @Autowired
    private DtoTblClassIf dtoTblClass;

    /**
     * リクエスト/レスポンス用データモデルクラス
     */
    @Autowired      //データモデルオブジェクトをDI
    private FormCreatureClassIf formCreatureClass;

    @Autowired      //ビジネスロジックをDI
    private BlCreatureClassIf   blCreatureClass;

    /**
     * データモデルへのバインド
     */
    @ModelAttribute("FormCreatureClass")
    public FormCreatureClassIf setUpBindObject() {
        blCreatureClass.setForm(this.formCreatureClass);    //パラメータをビジネスロジックに継承
        return this.formCreatureClass;
    }

    /**
    *初期画面を表示する
    */
    @RequestMapping(value = "/creaturetree" )
    public String creaturetree() {
        return "creature_tree";
    }

    //**
    * 生物分類クラス検索結果画面を表示する
    */
    @RequestMapping(value = "/creatureclass",   method = RequestMethod.POST )
    public String creatureclass(
            @RequestBody String jParam
            ) throws Exception {

        //JSON形式のリクエストパラメータをdecode
        jParam = jsonConvert.decode(jParam);
        logger.log_info(this, "jParam["+jParam+"]");
        //JSON表現形式をJavaオブジェクト(DtoTblClassIf)にデシリアライズする
        dtoTblClass = (DtoTblClassIf)jsonConvert.Deserialize(jParam, dtoTblClass);
        //リクエストパラメータをフォームBeanに保持
        formCreatureClass.setParent(dtoTblClass.getParent());
        formCreatureClass.setRute(dtoTblClass.getRute());

        //リクエストされたパラメータで生物分類マスタDBを検索する
        blCreatureClass.getClassList();

        //検索結果をviewに表示する
        return "creature_child";
    }

}