人気コンテンツ今日: |
WebObjects | バグ?エラー?Submitted by sasaki on 水曜, 2006-08-02 20:00.
WebObjectsのバグでしょうか? それとも自分が悪いのか? ここに注意!
■タイムスタンプと日付ふだん日付フィールドは、日付だけが入力されていればいいと思う。だけど、入力日や修正日を記録したいときは時間も記録したい。 しかしながら時間が表示されたり、表示されないときがあるのでOracleのTIMESTAMPなどを試してみたが、EOModelerのバグでOracleには対応していなかった。 しかし、もっと簡単な方法があった。 EOModelerでName, Column, Value Class, と並んでいるずっと先に Value というフィールドがある。そこに「T」と一文字だけ入れればOK。 Valueフィールドが表示されていなければ、Add Columnから選んでValueフィールドを表示させる。 昔のEOModelerは、自動的に「T」が入っていたけど、今は手動になったのかな。Stringの「S」も省略されているなぁ。
■400文字を越えた程度でエラーテキストボックスに400文字を越えたテキストを入力して保存しようとすると、エラーが発生する。 Error: OracleでそのフィールドにVARCHAR2(4000)を指定しているのに、わずか400文字程度でORA-01483エラーが起きてしまう。 回避策:VARCHAR2じゃなくて、CLOBを使いましょう。
■ラジオボタンWebObjects builderで、フォームの中にラジオボタンをコピーペーストしたときのこと。 コンパイル、そして起動後にフォームの送信ボタンを押すと、エラーメッセージが「we expected a boolean but received a java.lang.String with a value of false.」と表示される。 原因は、ラジオボタンの false が "false" とダブルクォートで囲まれてStringになってしまっていた。ダブルクォートを削除して問題解決。
■起動しない!起動スクリプトを作って、キックしても起動しない。 MyAppli.woa/Myappli を直接起動しても、すぐに終了する。 原因は、/home のディレクトリが711だったため。 # chmod 755 /export/home で解決。
■WebObjects Builderでのコピーペーストに注意 - 1
WebObjects Builderで、作業をするときによくやるのが、コピーペースト。 例えば、これから新しくDealer.woを作るとき、
で、最終的にビルドして実行してみると、エラーが発生する。 エラーメッセージをよく見て、必要のないオブジェクトやWORepetition、WOConditionalなどが残っていたりするので、Dealer.html、Dealer.wodから削除する。
■WebObjects Builderでのコピーペーストに注意 - 2
入力フィールドが、文字なのに、日付フォーマット"%Y/%m/%d"を指定したままだったり、数値フォーマットを指定したままだったりすることがよくある > オレ。
■WebObjects Builderでのコピーペーストに注意 - 3
ひとつの入力画面で、同じ入力フィールドを2つ作ってしまうことがある。 Customer.name が画面の上の方。もう一つは、目立たなく画面の下の方にCustomer.name と。 上の方のフィールドに何度、「高橋」と入力しても「」と空白になってしまうのだ。 「何度、入力しても消えてしまうんです!」とユーザの声で気づいたのであった。
■WebObjects Builderでの注意せっかく新しく追加した、UserPage.woがWebObjects Builderで開かなかったりします。 Open document WebObjects Builderを再起動するか、Macを再起動しましょう。
■Xcodeでアプリを実行すると「ステータス 1 で終了しました」今まで、ビルドと実行が出来ていたのに、あるときから実行できなくなってしまうことがある。 あせっては、いけない。Mac自体を再起動するのだ。 それだけで、いつも通りに動いてくれる...はず。 いざというときのために、毎回プロジェクトのフォルダごと コマンド+D で、バックアップしてからプログラミング作業に入りましょう。
■EOModelerでの変更がプロジェクトに反映されない
うーむ、FileMargeが起動してマージしてくれるはずがうんともすんとも言わない。 こんなときは、手動でマージする。EOModelerでEmployeeモデルを変更した場合、 プロジェクトのフォルダにEmployee.javaとEmployee.java.newがあるはず。これをFileMergeアプリケーションで、 File > Compare Files...
とファイルをドラッグしてCompareすればよし。FileMergeが調子悪ければ、テキストエディタでEmployee.java.newを開いて手動でコピーペーストする。 後で、Employee.java.newをゴミ箱に捨てる。
■TextField1の定義が無い?こんなエラーが表示された。
原因は、入力欄TextField1をコメントアウトした後に、同じページ内に入力欄を追加した。それがTextField1と内部的に命名されていたのだ。その入力欄を消したため、wodファイルからTextField1が削除されたので、コメントアウト内のTextField1と対になる定義を見つけられなくなってしまったらしい。 コメントアウト内の入力欄は使わなかったら削除しましょう。
■ローカルでは正常に動作するが、サーバにアップすると動かないログを見てみると、 [2006-12-05 20:24:10 JST] <WorkerThread9> <com.webobjects.appserver._private. メッセージによるとコネクション、データベースの設定をチェックしろ!と。 おっしゃる通り、サーバ名を間違えておりました。 社外のVPN先のデータベースサーバなので、ローカルからのIPアドレスと、そのサーバ自身のIPアドレスが違うのでした。
■デプロイしたら、動かない(上記と同じ)ローカルでは、動くんですよ。でもサーバにアップすると動かない。Safariがこのようなメッセージを表示する。 The requested application was not found on this server. で、/usr/local/apache/conf/WebObjects.xmlを見ると、ちゃんと書いてある...つもりだったが、ここに落とし穴が! <application name="HelloWorld" そう!ターミナル上で、この記述をコピーペーストしたもんだから、recvTimeoutが、recvTi と meout と離ればなれになっていたのであった。 vi 上で、shift + J で上下の行をつないで修復完了。 ついでに、1行めと2行めの<application ... jp/">もつないで1行にしておきましょう。
|
WebObjectsamazon広告英語お勧め教材! 英語の学校でも使っているのですが、1つのストーリーを3分で読めて、内容も面白く、もっと早く出会いたかった本です。 Apple好きで英語も勉強したいならこの一冊! ブログパーツ |