Java
デフォルトだとファイル名にバージョン番号とか入っちゃいますよね。 それを辞めたいときは pom.xml の build タグの下に finalName タグで指定できます。こんな感じで。 <project ...> <build> <finalName>app</finalName> ... </build> ... </project> ... これで成果物は `app.jar` になります。
今日、マイクロソフト本社から来た David さんとお昼ご飯をしたときに教えてもらえた彼のプロダクトが凄かったので紹介したいと思います。 quicktype.io quicktype JSON をペーストするとシリアライズ・デシリアライズするためのコードを出力してくれるサー…
ちょっと古傷を触ってしまってJavaってました。 HibernateなどからConnectionを取得した時に生のJDBCのコネクションをそのまま返すのではなく、Proxy化されてOracle固有の処理をしたくて困ったことがありましたとさ。解決策としてはgetMetaDataでMedaDataを…
Spring Bootのバリデーションは属性つけるだけで簡単にできます。 5.5. 入力チェック — TERASOLUNA Global Framework Development Guideline 1.0.0.publicreview documentation 上記のページの最後に書いてある内容なのですが、このアノテーションはnull値は…
こんな感じで作ってみた。 画面はしょっぱいですが、TODOアプリです。 pomの準備 とりあえずmavenでプロジェクトを作成したら、pomを編集します。お約束ですね。最近みないで打てるようになってきました。
Spring Bootでファイルのダウンロードを試してみました。HttpServletResponseを引数に受け取ってServlet時代と同じように書き込みをする方法もあるみたいなのですが、今回はResponseEntityというクラスを使ってみました。 こいつを使ってContent-Typeなんか…
Thymeleafのテンプレート内でJavaScriptを書くときは以下のように書きます。おまじないだと思って <scrpit type="text/javascript"> /**/ </script> JavaScriptの<や>などがXMLのタグの開始なんかとして見られないためですね。
@ModelAttribute("hoge") FooForm a みたいにしたらhogeという名前でThymeleafからアクセスできるようになります。このとき @ModelAttribute FooForm a のように名前を省略することもできます。そのときはクラス名の最初を小文字にした名前でアクセスできま…
Spring BootでファイルアップロードをするにはMultipartFileインターフェースを受け取るようにするといいみたいです。 こんなクラスを定義して package okazuki.fileupload.simple.controllers; import org.springframework.web.multipart.MultipartFile; pu…
Getting Started · Uploading Files Spring boot service to download a file - Stack Overflow あとで、このページをもとに試してみて記事にしよう。
Spring Bootは単体テスト機能もついてます。 35. Testing Spring Bootでコントローラの単体テストをするには、まず単体テストのクラスをアノテーションでいろいろ飾ってやる必要があります。 package okazuki.validationEdu; import org.junit.After; import…
Spring Bootはデフォルトで検証エラーのメッセージをValidationMessages.propertiesから取得します。これを変えたい!って思ったら以下のようにします。 手順としては LocalValidatorFactoryBeanを作成する messageSourceを任意のものにする WebMvcAutoConfi…
Spring Bootで入力値の検証 - かずきのBlog@hatenaokazuki.hatenablog.com 基本的に上の記事の通りでいいんですが、複数の属性を同じプロパティにつけた場合に、一気にバリデーションが実行されてエラーメッセージがうざいことになってしまいます。例えば以…
実行時に相手に言語を選択させて表示言語を切り替えるっていうことがあると思います。 Spring Bootでもそういった機能があります。 まず、Appクラスで以下のBeanを公開します。 SessionLocaleResolver LocaleChangeInterceptor そしてWebMvcAutoCOnfiguratio…
Spring Bootのメッセージはデフォルトでmessages.propertiesから取得されます。Thymeleafからは <span th:text="#{hogehoge}">XXX</span> のように取得します。 このmessages.propertiesが気に入らなければapplication.propertiesでカスタマイズすることができます。 以下の設定項目を使います。…
Spring Bootってpom.xmlのparentを設定するんですが既存のプロジェクトだと既にparentって使われてたりしたりするケースもあると思います。そんなときどうするか? ということで、以下のpom.xmlでいけました。
ハイパーリンクの列を作りたい!ということもあります。そんな時には、igGridの列の定義にunbound: true, template: "ここにリンクのHTML"という感じの追加してやります。 igGridのサンプル的には以下のようにやります。 列テンプレート サンプル - Grid コ…
IgniteUIにはLayoutManagerなる機能がついています。こいつを使うとJavaのSwingのBorderLayoutみたいなレイアウトが簡単にできるようになっています。因みに、Bootstrapみたいなグリッドレイアウトもサポートしています。 ここでは、お試しとしてBorderLayou…
Spring BootでIgniteUIを使ってみる - かずきのBlog@hatenaokazuki.hatenablog.com 上記記事では、REST APIを呼び出してigGridにバインドしてました。今回はJSONをHTMLに埋め込む形でやってみようと思います。 こんな感じにModelに適当にListを突っ込みます…
先ほどJSONを返すサービスの作り方がわかったのでIgniteUIのGridにバインドしてみました。 Spring BootでJSONを返すAPIを作る - かずきのBlog@hatenaokazuki.hatenablog.com IgniteUIのLoaderを使って必要なファイルは読み込んでもらうようにしてもらってま…
超簡単でした。@RestControllerで戻り値がオブジェクトでOKっぽいです。 package okazuki.igniteui.controllers; import java.util.ArrayList; import java.util.List; import org.springframework.web.bind.annotation.RequestMapping; import org.springfr…
src/main/resourcesに適当な名前(ここではapplicationContext.xml)でSpringの構成ファイルを作成します。そして、Appクラスに以下のようにImportResourceアノテーションをつければOKです。 @SpringBootApplication @ImportResource("classpath:application…
SessionAttributeを使うと同じコントローラ内でオブジェクトを持ちまわることが出来ます。 詳細は全部こっちに書いてあります。 5.8. セッション管理 — TERASOLUNA Server Framework for Java (5.x) Development Guideline 5.0.0.RELEASE documentation 試し…
Filterを実装したクラスを用意します。 class LogFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest request, ServletResponse response, Fil…
サイトにアクセスするとログインページが出て、ログインするとメニューページに行くというものを作ってみようと思います。 プロジェクトの作成 プロジェクトを作ってpom.xmlを編集します。まずはSpring Boot使うためのお約束として以下のものを追加します。 <parent> <groupId></groupid></parent>…
h2データベースでさくっと試してみました。 pom.xmlに以下の記述を追加。今回はh2なのでh2のjdbcドライバを追加してます。SQL ServerならSQL ServerのJDBCドライバを追加するといいと思います。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>c</groupid></dependency>…
超簡単です。 #{プロパティのキー} でOKです。これで、messages.propertiesの中からメッセージ拾ってきてくれます。 <span th:text="#{helloworld}">ほげほげ~</span> こんかなんじ。
Spring Bootで入力値の検証をします。 基本 Bean Validationが使えるみたいです。 Using Bean Validation - The Java EE 6 Tutorial ということで、以下のようなクラスを作ってアノテーションをつけるだけでOK。 package helloboot.modelattr.controllers; i…
@RequestParam("hoge")をメソッドの引数に使って1つ1つ受け取るのもいいですが、数が増えてくると1つのクラスにまとめたくなったりしますよね。そんな時に使えるのが@ModelAttributeアノテーション。 こんな入力フォームがあるとして <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8" /> <title>Insert title here</title> </head> <body></body></html>…
なんでデフォルトが古代の1.6なんでしょうか…(jarのプロジェクトの場合は、さらに古代の1.5) pom.xmlのpropertiesにjava.versionを足してやればOKです。 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </properties> これを足した状態でプロジェクトの右クリックメニューからMaven ⇒ Update Project...を選…