トップページ | 2005年11月 »

2005年10月30日 (日)

実行中のコンピュータのOSを調べる

この部分は、もともとコーディングしていたのに、不要になったので覚え書き。
Javaで、実行中のコンピュータのOSを調べる方法。

        String osName = System.getProperty("os.name");

        if (osName.indexOf("Windows") >= 0) {
            // Windowsの場合の処理
        } else if (osName.indexOf("Linux") >= 0) {
            // Linuxの場合の処理
        } else {
            // その他のOS
        }

| | コメント (0) | トラックバック (0)

2005年10月28日 (金)

struts ラジオボタンで初期値設定

strutsのhtmlタグでラジオボタンを作成したとき、その初期値を設定する方法。

JSP内で<html:radio property="radio" value="abc">
としたとき、表示前に実行するAction内で
PropertyUtils.setProperty(form, "radio", "abc");とする。

ネットで調べると、ActionFormで初期値をセットする、という方法を書いている
場合が多かったんだけど、今回は既に作っていた画面にラジオボタンを追加する、
という状況だったのでbeanの項目を増やすよりこちらのほうが簡単でよかった。
ちょうど、初期表示のActionがあったからすぐに追加できた、というのはあるけど。
PropertyUtilsはorg.apache.commons.beanutils.PropertyUtilsクラス。
今まではActionから画面への値のセットは、beanに値をセットする方法しか
知らなかったけど、これはいい!

それにしても今日はjavascriptですごく苦労した。エラーが出てもなかなか
原因がわからないんだよなー。なんかいい開発ツールはないんだろうか。
みんな苦労してるのではないかと思うんだけど。

| | コメント (0) | トラックバック (0)

2005年10月27日 (木)

earファイルが消せない

2、3日前から悩んでいた、「Jarファイルを展開して別のフォルダに
コピーしたあと、展開したフォルダとその中のファイルを削除しようとするが
earファイルだけ削除できない。」という問題が今日やっと終わった。
原因はearファイルからバージョンを取得する部分だった。
earをjarにキャストしてマニフェストを取得したりURLClassLoaderを
使ったりしてバージョンを取り出していたのだけど、その処理が
終わってからもどれかがearファイルをつかんだままになっていて
削除できなかった。jarファイルをcloseしたり、その他に使っていた
変数にnullをセットしたりしてみたけど結局できなかった。
時間がないこともあって、「java -jar」のコマンドをたたいて取り出す
方法に変えた。初めはストリームをcloseしていないのかと思って
そればかり調べていて時間がかかっちゃったなあ。
でも今回はやり方を変えただけで、解決はしていない。
「何がダメなのか」が分からないままになってしまった。
でも今は調べてる時間がないのよねー。
Fileクラスのdelete()でフォルダを削除するには中のファイルを
すべて削除してからでないとできない、ということも今回初めて知った。

今日わかったことは、あと2つ。

(1)Eclipseでファイル名を変更するときは、ファイルを選んで
右クリック-リファクタリング-名前変更(今までは、元のファイルをコピーし
(コピーするときに名前を変えて)、そのあと元のファイルを削除、
なんてまどろっこしいことをしていたのだ)。

(2)jsファイルを別に作ってjspから使おうと思ったんだけど、一通りのことをしても
どうもjsファイルが認識されていないようで「オブジェクトを指定してください」というような
JavaScriptのエラーが出る。実はdeployされていなかった。
deploy時に実行するantのbuild.xmlのpackage.warの
<fileset dir="-----">に
<include name="js/**" />を追加することで解決。

| | コメント (0) | トラックバック (0)

2005年10月25日 (火)

Actionで画面の全項目を取得

今日の発見のひとつは、Webサービスの中にブレークポイントを置かないと、
デバッグ時にWebサービスのほうへ行ってくれない、ということ。

先週まで問題なく動いていた、Webサービスからファイルを取得する部分で、
突然「ストリームの終了が最後の境界生成の前にありました。」というエラーが出た。
デバッグすると、Webサービスを呼んでいるところでエラーが出るのだけど、
呼び出す一行を実行するとエラーになるだけで理由が分からなかった。
その後Webサービスのほうにブレークポイントを入れてデバッグしてみて初めて
Webサービス側まで入ってデバッグできて、そちらでエラーが起こっていることが分かった。
結局は、テスト用に作ったファイルの中身が間違っていて、何も返すものがなかった、
ということだったのだけど、そのエラーメッセージでは、何のことだか分かりませんって。
とにかく、Webサービスに関わる部分でエラーが出たら、まずWebサービスの中に
ブレークポイントを置くべし、です。

タイトルの「Actionで画面の全項目を取得」というのは10/19のメモ。
サーバ側の入力チェック時に使った。

DynaActionForm checkForm = (DynaActionForm)form;
Iterator it = checkForm.getMap().keyset().iterator();
String text = checkForm.getString(it.next().toString());

下線部分で項目名が取得できる。あとはiteratorをループするだけ。
「全項目、入力必須です」というようなときに便利だと思う。

| | コメント (0) | トラックバック (0)

2005年10月23日 (日)

今日からブログ

毎日システムを作る仕事をしていると、いろいろと新しいことを覚えていく。

教えてもらったことや、時間をかけて調べたことを忘れないために、
ノートにずっとメモをしてきたのだけど、ノートが増えてきてどこに書いたかを
探すのが大変になってきたので、ブログに書いていくことにした。

目的は自分の備忘録だけど、調べものをしていると人のブログも
すごく参考になる。だから、私が書いたことが、私と同じことで悩んでいる人に
少しでも役に立ったらいいなーとも思う。

今は、Javaで開発をしているので、Eclipse、Strutsなどで毎日発見がある。
でもStrutsが苦手。というか画面を作るのが苦手。JavaScriptでもよくハマる。
もともとVBから入って、楽に画面を作れていたからかな?
デバッグがしにくいというのも良く詰まる理由だろうな。
Strutsってほんとに便利なのか、とよく思う。
ほんの少し設定を間違えているだけで全然画面が表示されなかったり、
エラーが出てもすぐに原因がわからない。
(もちろん、私のプログラミング能力が低いことは承知しております。)
そもそも設定することが多すぎるような気がするのだけど。
でもあとでメンテすることを考えたらやっぱり便利なのかな。

ま、私がいくら文句を言ったところで、それを使うことを指示されているからには、
なんとか使っていかなくてはならないわけであります。

| | コメント (0) | トラックバック (0)

トップページ | 2005年11月 »