4/2(土) Kotlin 1.0リリース記念勉強会 in 京都に行ってきた

Kotlinの勉強会にSpringBoot+Kotlinネタでしゃべりにいきました。
発表したスライドはこちらになります。

会場でAndroid以外でKotlinを使ってる人がどれくらい居るか質問したんですが、予想よりも多くて驚きました。
Androidアプリで「Java7までしか使えないからKotlin使うかー。使うしか無いかー。」みたいな使われ方するのがメインだと思ってたんですけど、普通にJavaの置き換えとして使うみたいな人が多いんですかね?

Read More

SpringBootでCSRFを無効にせずAjaxを使いたい

学校での作品制作してる時に詰まったAjaxをCSRFトークン無効化せずにやる方法をメモ代わりに書いておく。

headでcsrfトークンを埋め込む

<meta name="_csrf" th:content="${_csrf.token}" />
<meta name="_csrf_header" th:content="${_csrf.headerName}" />

リクエストヘッダーに、metaタグから取得した値を設定する

<script type="text/javascript">
    var token = $("meta[name='_csrf']").attr("content");
    var header = $("meta[name='_csrf_header']").attr("content");
    $(document).ajaxSend(function(e, xhr, options) {
        xhr.setRequestHeader(header, token);
    });

    $(function() {
        $('#button').on('click', function() {
            $.ajax({
                url : 'url',
                type : 'POST',
                data: {
                    project: "Test"
                }
            }).done(function(data) {
                $("#message").text("成功");
            }).fail(function(data) {
                $("#message").text("エラー: " + data.statusText);
            });
        });
    });
</script>

参考: http://terasolunaorg.github.io/guideline/5.0.0.RELEASE/ja/Security/CSRF.html#ajaxcsrf

SpringMVC良さげ感

学校のプロジェクト演習の授業でWebアプリ作ろうとしてるけど、何を使うか色々試してる。
JavaEE7でJSF+PrimeFaces使ってるけど結構不満な点がいくつか出てきた。
例えば/app/project/1/dashboard.jsfみたいなURLを使いたいって時に/app/project/{projectID}/dashboard.jsfみたいな感じにできない。
できるかもしれないけど方法見つけられなかった。
じゃあGET使うかってことで/app/project/dashboard.jsf?projectID=1ってすると、とあるプロジェクト一覧のとあるタスクページを見ようとした時にこうなる。
/app/project/ticket.jsf?projectID=1&ticket=2
これが気に食わない感じ・・・

今日うらがみがJavaまわりのWebフレームワークを知りたい会行ってきて色々話し聞いた感じSpringMVCがよさ気だった。

コード例としてはこんな感じ

@Controller
public class SayHelloController {
    @RequestMapping("/hello/{name}")
    public String sayHello(@PathVariable("name") String name, Model model) {
        model.addAttribute("name", name);
        return "hello";
    }
}

やりたいことが解決出来たねやったね。
テンプレートエンジンにThymeleaf使えばデザイナも多分苦しまないだろうし、こっち使えば問題解決だし乗り換えるかな?
けどPrimeFacesなくなるからajax自分で書かないといけなくなるんだよね。JS書くの苦手だから出来る限りフレームワークに頼りたさある。
Springいろいろ試してみてから移行考えてみることにする。