2004-07-16
_ 同期飲み
久々に会社の同期で飲みましょうということで飲み会.っていうか先週の金曜も部署の歓送迎会で飲み会だったような….でもまぁ,こうして同期で飲むことも研修中はホテルでよくやりましたが,2年目ともなるとみんなそれぞれの仕事でなかなか会う機会もなくなってしまいましたね.
場所は名古屋駅からすぐ近くのビストロ教会.っていうかここレストランバーだったんだ…,以前にも近くを何度か通ったことはあったけど普通に教会だと思ってた.2階の教会風フロアでしたが,3階は監獄らしいです.メニューは同じなのかな.料理のほうはまぁそれなりにおいしかったと思います.ちょっとでてくるのが遅かったような気がしなくもないですが….
2004-07-14
_ JavaScriptでフォームのクリア
Strutsで開発してる際に,入力チェックなどで元の画面に遷移した場合,フォームのvalueに値が入った状態で表示される.通常入力された値に関してはフォームのリセットボタンでクリアが可能ですが,valueに値が書かれてしまっている場合は,それをクリアすることができません.仕方がないので,この部分に関してはJavaScriptでクリアするように実装することにしました.
…が,Strutsでは<html:form>タグを使ってformのJSP上に定義をしているためにname属性を指定すると,JSPコンパイルエラーで表示ができない.というわけで,formname.fieldname.value=''といった感じではフォームの値をクリアできないことが判明.明示的に名前を指定してフォームを特定する以外に方法はないかとGoogleで検索してみると,他にもやり方があるらしい.
document.forms[0].elements[0].value
これが今回の問題を解決する上で非常に重要になってくるキーワード.それぞれが何を意味しているのかというと,
- document
- 現在表示されているページ
- forms[0]
- 現在のページで最初に現れるフォーム
- elements[0]
- フォーム内で一番目のエレメント
- value
- そのエレメントの値
という意味です.
ページ内のすべてのフォームは,現れる順番に0から始まるインデックス番号が付いてforms[]配列に入っています.最初のフォームが forms[0],2番目のフォームが forms[1],3番目のフォームが forms[2]…(以下続く)となります.エレメントについても同様です.このことから現在のページの何番目のフォームの何番目のエレメントの値をいじりたい場合,今回の要件だと値を空にしたい場合は
document.forms[0].elements[0].value="";
とJavaScriptのコード内に記述すればいいということになります.普段,自分がネットを使う場合はJavaScriptは切ってしまっているので,こんな機能があったところでまったく機能しないわけですが,使えれば使えたで便利なものではあるなぁと思いました.
2004-07-12
_ 文字化け
WSADで開発していてちょっとばし困ったことの解決策の覚え書.HTMLのフォームに2byte文字を入力して送信した場合に,文字化けしてしまうことがあった.具体的に言うと,Struts Valitatorを使って入力チェックを行った場合,半角英数字しか受け付けない場合にエラー処理で,元の画面に遷移するようにしていたのが,フォームの中身が2byte文字の場合は「??????」に置き換わってしまう現象.
対応策としては,web.xmlをGUIで開いたときの「拡張機能」タブで表示される「WebSphere拡張機能」設定画面で,次の項目にチェックを入れればいいだけ.
- 自動要求エンコード使用可能
- 自動応答エンコード使用可能
これで文字化けは直った.ところで,WSADではこれでうまくいったけど,WebSphere拡張機能ということはeclipsではこういった機能は用意されていないのだろうか….