読者です 読者をやめる 読者になる 読者になる

かずきのBlog@hatena

XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

Hibernate(やSpring?)がProxy化してるJDBCのConnectionからoracle.jdbc.Connectionを取得する方法

ちょっと古傷を触ってしまってJavaってました。 HibernateなどからConnectionを取得した時に生のJDBCのコネクションをそのまま返すのではなく、Proxy化されてOracle固有の処理をしたくて困ったことがありましたとさ。解決策としてはgetMetaDataでMedaDataを…

Spring Bootで未入力項目をNullにする(バリデーション時に未入力のときはスルーするようにする)

Spring Bootのバリデーションは属性つけるだけで簡単にできます。 5.5. 入力チェック — TERASOLUNA Global Framework Development Guideline 1.0.0.publicreview documentation 上記のページの最後に書いてある内容なのですが、このアノテーションはnull値は…

Spring BootでToDoアプリを作ってみた

こんな感じで作ってみた。 画面はしょっぱいですが、TODOアプリです。 pomの準備 とりあえずmavenでプロジェクトを作成したら、pomを編集します。お約束ですね。最近みないで打てるようになってきました。

Spring Bootでファイルダウンロードをする

Spring Bootでファイルのダウンロードを試してみました。HttpServletResponseを引数に受け取ってServlet時代と同じように書き込みをする方法もあるみたいなのですが、今回はResponseEntityというクラスを使ってみました。 こいつを使ってContent-Typeなんか…

Spring BootのThymeleafのテンプレート内でJavaScriptを書く

Thymeleafのテンプレート内でJavaScriptを書くときは以下のように書きます。おまじないだと思って <scrpit type="text/javascript"> /**/ </script> JavaScriptの<や>などがXMLのタグの開始なんかとして見られないためですね。

Spring Boot小ネタ ModelAttributeで名前を指定しなかったときのデフォルトの名前

@ModelAttribute("hoge") FooForm a みたいにしたらhogeという名前でThymeleafからアクセスできるようになります。このとき @ModelAttribute FooForm a のように名前を省略することもできます。そのときはクラス名の最初を小文字にした名前でアクセスできま…

Spring Bootでファイルをアップロードする

Spring BootでファイルアップロードをするにはMultipartFileインターフェースを受け取るようにするといいみたいです。 こんなクラスを定義して package okazuki.fileupload.simple.controllers; import org.springframework.web.multipart.MultipartFile; pu…

Spring Bootでファイルアップロード/ダウンロードのことが書いてあるページのメモ

Getting Started · Uploading Files Spring boot service to download a file - Stack Overflow あとで、このページをもとに試してみて記事にしよう。

Spring Bootでコントローラの単体テスト

Spring Bootは単体テスト機能もついてます。 35. Testing Spring Bootでコントローラの単体テストをするには、まず単体テストのクラスをアノテーションでいろいろ飾ってやる必要があります。 package okazuki.validationEdu; import org.junit.After; import…

Spring BootでバリデーションのメッセージをValidationMessages.properties以外にする

Spring Bootはデフォルトで検証エラーのメッセージをValidationMessages.propertiesから取得します。これを変えたい!って思ったら以下のようにします。 手順としては LocalValidatorFactoryBeanを作成する messageSourceを任意のものにする WebMvcAutoConfi…

Spring Bootで入力値の検証(バリデーション)の順番を制御する

Spring Bootで入力値の検証 - かずきのBlog@hatenaokazuki.hatenablog.com 基本的に上の記事の通りでいいんですが、複数の属性を同じプロパティにつけた場合に、一気にバリデーションが実行されてエラーメッセージがうざいことになってしまいます。例えば以…

Spring Bootを使って実行時にロケールを切り替える

実行時に相手に言語を選択させて表示言語を切り替えるっていうことがあると思います。 Spring Bootでもそういった機能があります。 まず、Appクラスで以下のBeanを公開します。 SessionLocaleResolver LocaleChangeInterceptor そしてWebMvcAutoCOnfiguratio…

MessageSourceのもとになるプロパティファイルを複数設定する方法

Spring Bootのメッセージはデフォルトでmessages.propertiesから取得されます。Thymeleafからは <span th:text="#{hogehoge}">XXX</span> のように取得します。 このmessages.propertiesが気に入らなければapplication.propertiesでカスタマイズすることができます。 以下の設定項目を使います。…

Spring Bootをparentをセットせずに使いたい

Spring Bootってpom.xmlのparentを設定するんですが既存のプロジェクトだと既にparentって使われてたりしたりするケースもあると思います。そんなときどうするか? ということで、以下のpom.xmlでいけました。

Spring BootでigGridを使ってハイパーリンクの列を作りたい

ハイパーリンクの列を作りたい!ということもあります。そんな時には、igGridの列の定義にunbound: true, template: "ここにリンクのHTML"という感じの追加してやります。 igGridのサンプル的には以下のようにやります。 列テンプレート サンプル - Grid コ…

Spring BootでInfragistics IgniteUIのLayoutManagerを使う

IgniteUIにはLayoutManagerなる機能がついています。こいつを使うとJavaのSwingのBorderLayoutみたいなレイアウトが簡単にできるようになっています。因みに、Bootstrapみたいなグリッドレイアウトもサポートしています。 ここでは、お試しとしてBorderLayou…

Spring BootでIgniteUIを使ってみる その2

Spring BootでIgniteUIを使ってみる - かずきのBlog@hatenaokazuki.hatenablog.com 上記記事では、REST APIを呼び出してigGridにバインドしてました。今回はJSONをHTMLに埋め込む形でやってみようと思います。 こんな感じにModelに適当にListを突っ込みます…

Spring BootでIgniteUIを使ってみる

先ほどJSONを返すサービスの作り方がわかったのでIgniteUIのGridにバインドしてみました。 Spring BootでJSONを返すAPIを作る - かずきのBlog@hatenaokazuki.hatenablog.com IgniteUIのLoaderを使って必要なファイルは読み込んでもらうようにしてもらってま…

Spring BootでJSONを返すAPIを作る

超簡単でした。@RestControllerで戻り値がオブジェクトでOKっぽいです。 package okazuki.igniteui.controllers; import java.util.ArrayList; import java.util.List; import org.springframework.web.bind.annotation.RequestMapping; import org.springfr…

Spring BootでapplicationContext.xmlのような自前の構成ファイルを読み込ませるには

src/main/resourcesに適当な名前(ここではapplicationContext.xml)でSpringの構成ファイルを作成します。そして、Appクラスに以下のようにImportResourceアノテーションをつければOKです。 @SpringBootApplication @ImportResource("classpath:application…

Spring BootでSessionを扱う(SessionAttribute版)

SessionAttributeを使うと同じコントローラ内でオブジェクトを持ちまわることが出来ます。 詳細は全部こっちに書いてあります。 5.8. セッション管理 — TERASOLUNA Server Framework for Java (5.x) Development Guideline 5.0.0.RELEASE documentation 試し…

Spring BootでFilterを使う

Filterを実装したクラスを用意します。 class LogFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest request, ServletResponse response, Fil…

Spring Bootで認証を行う

サイトにアクセスするとログインページが出て、ログインするとメニューページに行くというものを作ってみようと思います。 プロジェクトの作成 プロジェクトを作ってpom.xmlを編集します。まずはSpring Boot使うためのお約束として以下のものを追加します。 <parent> <groupId></groupid></parent>…

Spring Bootでデータベースを扱う

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>…

Spring BootのView(Thymeleaf)でプロパティファイルの文字列を出したい

超簡単です。 #{プロパティのキー} でOKです。これで、messages.propoertiesの中からメッセージ拾ってきてくれます。 <span th:text="#{helloworld}">ほげほげ~</span> こんかなんじ。

Spring Bootで入力値の検証

Spring Bootで入力値の検証をします。 基本 Bean Validationが使えるみたいです。 Using Bean Validation - The Java EE 6 Tutorial ということで、以下のようなクラスを作ってアノテーションをつけるだけでOK。 package helloboot.modelattr.controllers; i…

Spring Bootでリクエストパラメータをオブジェクトで受け取る

@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>…

MavenでプロジェクトのJDKを1.8にする方法

なんでデフォルトが古代の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...を選…

Spring Bootを使ってHello world(Thymeleafの使用からwar化してAzureデプロイまで)

ちょっとSpring Bootを始めました。eclipseもMersになったことだし約4年ぶりくらいのeclipse生活です。JavaはもちろんJava 8!Stream使っていこうと思います。 さて、関係ない話はそれくらいにしてSpring Bootを始めたいと思います。 プロジェクトの作成 ま…

Andoridでタブを作る

タブを作るだけなのにめんどくさくない!? すごく参考になったサイト。 Fragmentによるタブのレイアウト | Fragmentによるタブ作成|サイト構築日記 タブでコンテンツ(Fragment) を切り替える | Fragmentによるタブ作成|サイト構築日記

Loaderを使ったデータの読み込み

最近のAndroidでのデータの読み込みはLoaderというものを使うらしいです。ちょっとやってみました。 オレオレ仕様にカスタムできるLoader カーソル前提のLoaderもあるんですが、自前のデータ読み込み処理を書けるAsyncTaskLoaderというのがあるのでそれを使…

BaseAdapterを継承しよう

ListViewにデータを表示するためにAdapterを使いますが、こいつを実装してみたいとおもいます。 とりあえず、前提として以下のようなクラスを画面に表示するとします。 package com.example.kazuki.myapplication.data; import android.provider.BaseColumns…

Androidでファイルの読み書きを行う

openFileOutputとopenFileInputで読み書きできる。getFilesDirで保存されてるファイルの入ってるフォルダが取れる。 public void onWrite(View v) { PrintWriter w = null; try { w = new PrintWriter(openFileOutput("out.txt", MODE_PRIVATE)); w.println(…

AndroidからAndroidWearのアプリを起動する

基本的には、これに準じます。 Android Wear → Androidの通信 - かずきのBlog@hatena 上記ページがAndroid Wear → AndroidなのをAndroid → Android WearにしてやればOK。 Android Studioでプロジェクトを作ってMobile側のアプリでメニューのSettingsをタップ…

Android Wearで通知を出したら即通知を表示する方法

いたってシンプル。通知を出したらアプリを閉じればいいのです。 アクティビティあたりで以下のような雰囲気のコードを書けばOK. Notification n = ...組み立て処理...; NotificationManager nm = (NotificationManager) this.getSystemService(Context.NOTI…

Android Wearで通知に丸いボタンをつける

Android Wearらしいあの丸いボタンのつけ方です。 NotificationのextendメソッドにNotification.WearableExtenderを突っ込みます。このWearableExtenderに対して、addActionメソッドでNotification.Actionを渡します。Notification.Actionには、アイコンと、…

Android WearのWearableListViewで、中央の項目以外を選択出来ないように見せる

めんどくさかった…! 以下の記事のソースをもとに作成します。 Android WearのWearableListViewの最小の使い方 - かずきのBlog@hatena WearableListView.Itemを実装したクラスを作成 色々あるけど、onScaleUpStartで中央にあるときの表示を制御して、onScale…

Android WearのWearableListViewの最小の使い方

ぐぐっても、あんまりWearableListViewの使い方が出てこなくて難儀しました。NotificationsのサンプルにWearableListViewの使い方はありましたが、色々余計な処理が入ってたので、備忘録として、最小限の使い方をメモっておきます。 プロジェクトの作成とWea…

ActivityからLayoutInflaterを作る

レイアウトファイルからViewを作ってくれるLayoutInflaterの作り方です。 LayoutInflater li = LayoutInflater.from(context); コンストラクタでActivityでも受け取っておいてActivityから作るのが一般的かな?作ったらあとは使えばOK View v = li.inflate(R…

Android Wear → Androidの通信

こちらのページを参考に、メッセージ送信の部分だけを抜き出して作ってみました。 Android Wearable Message API example (adsbygoogle = window.adsbygoogle || []).push({}); Android, Android Wear共通 両方のAndroidManifest.xmlのapplicationタグの下に…

GridViewPager + CardFragmentを使ってAndroid WearらしいUIを作る

Android Wearを触る機会を得たので少しアプリの作り方でも…。以下のページが超参考になります。 Y.A.M の 雑記帳: Android Wear アプリ開発 その1 Android - Wear用ViewのGridViewPagerを使う - Qiita Androidも、Androidで動くJavaのような言語も初心者です…

AlertDialogで背景のグレーになっている箇所をタップすると閉じるようにしたい

AlertDialog.Builderでダイアログを組み立てたあとにcreate()で取得したAlertDialogに対してsetCanceledOnTouchOutside(true)でいけるみたい。 package com.example.helloworld; import android.app.Activity; import android.app.AlertDialog; import andro…

JVMの起動オプションでロケールを変える

たとえば日本にしたかったら以下のオプションをつければOK -Duser.language=ja -Duser.country=JPGlassFishの場合は、管理コンソールでJVMの起動オプションを指定できるのでそこに追加する。

Windows 8のHyper-V上にCentOS 6.4+GlassFish+Apache+PostgreSQL

CentOSのインストール CentOS6.4だと凄い楽。最初からこのサイト見ておけばよかった・・・。 Windows 8 メモ / CentOS 6.4をHyper-Vにインストールする 続いて、GlassFishを入れるときに参考にしたサイト CentOS6.2にGlassFish3.1.2.2をインストールする Apa…

PrimeFacesのp:ajaxを複合コンポーネントに入れたい

JSF2.0になって、簡単なコンポーネントなら自作できるようになったけど、情報が少なくてはまると辛い。PrimeFacesのp:ajaxのlistener属性にcc:attributeから指定したメソッドを設定しようとするとリンク先のようなエラーがでる。 http://stackoverflow.com/q…

PrimeFacesのtreeコントロールで遅延読み込み

最近遅延読み込みがマイブームです。PrimeFacesのtreeコントロールは、遅延読み込み機能とかいうのは明示的にあったりはしないんですよね。dataTableの方にはあるのに。ということで、treeのほうはTreeNodeを自前実装してgetChildCountやisLeafやgetChildren…

PrimeFacesでJavaScriptと連携

JavaScriptからRPCみたいなことをしたあげく、サーバーサイドのコンポーネントツリーの変更を画面に反映したいとき〜!に使えます。 p:remoteCommand PrimeFacesには、remoteCommandという部品があって、こいつを使うと、タグを書くだけで管理ビーンのメソッ…

PrimefacesのdataTableで遅延読み込み

RichFacesからPrimeFacesに浮気中。こいつも遅延読み込みできるのね。 表示するデータは、以下の単純なクラス。 package com.mycompany.richtest; import java.io.Serializable; public class Person implements Serializable { private int id; private Str…

RichFaces4.xのDataTableでページングしつつ遅延読み込み

遅延読み込みしたいですよね?10000件とか下手したら無限とも言えるデータを全部メモリに抱え込んでとか、特にサーバーサイドにステートを持つのがデフォのJSFでやったら死んでしまいます。RichFacesには、そんな要望に応えるためのクラスがあります!! 個…

RichFaces4.xのTreeコントロールで選択中の要素を取得する

とりあえずメモメモ。 xhtmlでのポイントは、ajaxでやりたいからselectionTypeをajaxにしているところと、選択結果をレンダリングするためのrenderをoutpanelにしているところです。 outpanelは、ただのoutputTextです。その他の、toggleTypeをajaxにしたりt…