2015-10-01から1ヶ月間の記事一覧
今までAlt+Tabで切り替えてたけど「窓替え」にしてからウィンドウ切り替えが超効率的になった。 以下からダウンロードできる。 窓替えの詳細情報 : Vector ソフトを探す! オプションで以下を設定した ・表示>ウィンドウ>スタイル>ウィンドウ位置 をマウ…
Bootstrap標準のスタイルを上書きしたい、でもクラス単体だと標準スタイルの方が詳細度が高いので上書きできない。。というような場合。 id.classのように他のidやクラスも指定して詳細度を上げるとそのidなどが変更された時に困るので、もっといい方法を探…
標準のdark theme(名前はDelucaだったかな?)にしているとEditorのアクティブタブがどれかわかりにくくて困っていたので もっとわかりやすい色にする設定はないか調べてみた。 Preferences > Appearance & Behavior > File Colors で+ボタンを押し、Scope…
具体的にはnavbar-brandクラスを付けた項目とcollapse navbar-collapseクラスを付けた項目が重なる。 原因はBootstrapのクラスのスタイルを上書きするルールが定義されていたから。 CSSを見たら以下のルールがあった。誰かがレイアウト調整のために追加した…
久しぶりの新Mac版Officeだったのでかなり期待してたんだけど。。一日使ってわかったいまいちな点は以下。(OSはYosemite) ・ウィンドウ枠の固定をしていると固定している行が二重に表示されることがある ・「すべて検索」がない ・マウスでセル、シート名…
以下手順でまとめて検索できるようになる。(mac版の手順) Adobe Acrobat Reader DCをダウンロードしてインストールして実行する メニューの編集 > 高度な検索 を選択する 検索する場所に「以下の場所にあるすべてのPDF文書」を選択して検索するフォルダを…
普段はUSBケーブルをAndroidスマホに繋いでファイルを転送しているが、なぜかUSB繋いでもスマホが認識されなくなってしまった。 とりあえず「Portal」というアプリを使って解決したけど、Wifi経由でファイルが送れて便利だった。 使い方は以下参照。 http://…
以下のようにf:attributeタグを使ってオブジェクトをValidatorに渡せる。 <h:inputText> <f:validator validatorId="validateEmail" /> <f:attribute name="foo" value="bar" /> </h:inputText> Validatorのコードでは以下のようにしてオブジェクトを取得する。 @Override public void validate(final FacesContext context, final UIComponent component, final Object val…
以下のように例外をキャッチして判定するしかないっぽい。tryParse的なメソッドがあるのかと思ったけど。。無いならしょうがない。 try { new BigDecimal("some string"); // This do nothing because the instance is ignored } catch (NumberFormatExcepti…
メッセージは以下。 Warning:(11, 1) java: Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)'…
理由は以下。 満年齢は誕生日から一年が経過したら加算される。 なので日ベースでは1/2が誕生日であれば翌年1/1で一年が経過しているので1/1に年齢が加算される。 誕生日が2/29の場合閏年でもそうでない年も2/28に年齢が加算される。 Javaの場合のコードは以…
以下のようなEJBクラスがあったとする。 @Singleton public class Beans { .... } 以下のように@EJBをつけてオブジェクトをinjectしようとすると、「com.ibm.wsspi.injectionengine.InjectionException: CWNEN0030E」エラーが発生した。 @ManagedBean @ViewS…
句読点や中黒などはシンボル名に使えない。テストメソッド名を日本語で書いてると句点と中黒は結構使いたくなるんだけどな。。 使えない文字一覧は以下のサイトにある。 参考:
Javaはメソッド名等に日本語が使えるが、使うと以下の問題がある。 コード補完が効きづらくなる 同じ文字で文字コードが違うことがあるので、エディタ上では全く同じ変数名に見えて実際は違う変数ということがありえる。 例えば、「グ」という文字は「グ」一…
JSファイルに以下を書く。 window.my = {}; window.my.onkeypress = function() { var ENTER_KEY_CODE = 13; // ENTERが押下された場合、ソフトウェアキーボードを閉じる if (event.keyCode == ENTER_KEY_CODE) { document.activeElement.blur() } // ENTER…
FacesContext.getCurrentInstance().getPartialViewContext().isAjaxRequest() で判定できる。 FacesContext.getCurrentInstance().isPostback()もたまに使う。 参考:
DOMParser p = new DOMParser(); のようなコードを書くとコンパイル時に警告が出た。 DOMParserは内部所有のAPIであり、今後のリリースで削除される可能性があります 以下のようにDocumentBuilderFactoryを使うといい。 DocumentBuilderFactory dbFactory = …
Unchecked cast警告が出たら普通は以下のようにinstanceofで型チェックしてからCastするよう修正する。 if (obj instanceof String) { return (String) obj; } でも型パラメータはコンパイル後に消えるのでinstanceofで厳密に型チェックできない if (obj ins…
以下の手順で変更出来る。 src/main/resources 下にJsfStandardMessage.propertiesのような名前でプロパティファイルを置く faces-config.xmlに以下を追加 <message-bundle>JsfStandardMessage</message-bundle> JsfStandardMessage.propertiesに「javax.faces.converter.IntegerConverter.INT…
以下のようにInteger型のmonthフィールドをbindした場合、画面から入力値を空にしてもmonthには0が入ったままになり、nullにはならない。 <h:inputText id="month" value="#{controller.month}" styleClass="inputText inputText-date"> <f:ajax execute="#{execute}" event="change" /> </h:inputText>月 原因はEL parserのバグで、EL parser内では値をintで扱っているので、nullを0に変換しているから。 以下のJVM O…
add, setなどのメソッドの引数としてCalendar.HOURなどを渡すが、HOURとHOUR_OF_DAYの違いは以下。 ・HOURは12時間表記での時刻 ・HOUR_OF_DAY24時間表記での時刻 HOURを使った場合、午前か午後かはどうやって指定するんだよ。。という気がするが、そこは変…
バリデーションエラーになったらCompositeComponentのgetConvertedValueメソッドは呼ばれないと思っていたら、呼ばれた。まじか。。 以下のようにisValidationFailedをチェックした方が良さそう。 @Override protected Object getConvertedValue(final Faces…
f:attribute経由で渡せる。以下のようにxhtmlを書くと、 <h:inputText> <f:validator validatorId="validateEmail" /> <f:attribute name="foo" value="#{controller.foo}" /> </h:inputText> Validatorのvalidateメソッドで以下のようにして値を受け取れる。 String foo = component.getAttributes().get("foo"); 参考:
以下のようにcomposite component内に<f:event listener="#{cc.validate}" type="postValidate" />を入れてもlistenerが呼ばれなかった。 </f:event>
原因はバリデーションエラーメッセージを表示するh:messageタグがrenderで指定されていないこと。 以下のようにf:ajaxタグのrenderでh:messageのidを指定すると表示された。 <h:inputText id="text3" value="#{bean.text3}"> <f:validateRegex pattern="[A-Z][a-zA-Z]*" /> <f:ajax event="keyup" render="text3message" /> </h:inputText> <h:message id="text3message" for="text3" /> 参…</h:message>
スペース区切りでidを複数書くとそれぞれ更新される。executeなどrender以外も同じ仕様っぽい。 <f:ajax execute="search_form" render="linear1 linear2"/> 参考:</f:ajax>
パターンの先頭に(?i)を付ければいい。例は以下。 String target = "FOOBar"; target = target.replaceAll("(?i)foo", ""); System.out.println(target); 参考:
ViewScopeでやたらハマるので落とし穴をまとめた。 リクエスト毎にインスタンスが再生成される ViewScopeなのでURLが変わらないうちはインスタンスはずっと保持されるんだろうと思ったら、そうではないっぽい。 初回表示のGET時とPOST BACK時でBacking Bean…
ViewScopeのBeanを使う場合の注意点。JSF2.0での話なので2.2などでは違うかも。 ・@Namedでなく@ManagedBeanを使う。例は以下。 @ManagedBean @ViewScoped public class ViewController implements Serializable ... ・ViewScopeのBean及びそのインスタンス…
接続先を開発環境にしたり、本番環境にしたりと変更したい場合。 javaのDオプションで環境名を渡す java -Denvironment=test sampleServer そうすると System.getProperty("environment") で環境名を取得出来るのでそれを元に接続先を切り替えれば良い。 参…