今日は前回に引き続き基礎編:入力項目の追加をしてみようのURLの入力欄に入力された文字が半角英数字のみ(全角文字列の入力を弾く)かバリデートできるようにしてみよう。というところから進めていきました。 今日終わった作業は ・URLの入力欄に入力された文字が半角英数字のみ(全角文字列の入力を弾く)かバリデートできるようにしてみよう。 ・pgAdminから、入力したURLがデータベースに保存されているか確認してみよう。 ・一覧画面でURLをリンク付きで表示できるようにみましょう。 ・詳細画面では http://capture.heartrails.com/help/make_thumbnail を使ってサムネイルを表示しよう。 ・詳細画面でURLからドメイン部分だけを抜き出して表示してみよう。(途中まで)
昨日はあまりコードを理解せずにすすめてしまったので今日はコードを理解することにも気をつけながら進めていきました。一番理解できていなかったのがVelocityだったので、昨日教えて頂いた
http://www.techscore.com/tech/Java/ApacheJakarta/Velocity/index/ を見ながら進めていきました。Javaはほとんど触れたことが無かったのので適宜良さそうなページを探しながら進めていきました。
URLの入力欄に入力された文字が半角英数字のみ(全角文字列の入力を弾く)かバリデートできるようにする
最初は
https://hacknote.jp/archives/14501/ をもとに進めていたのですが、上手くいかなかったので別の記事をみていたところ
https://hacknote.jp/archives/14192/ という記事を見つけ
url.validate(msgList);
が足りないという事に気づき修正をしたところ上手く半角英数字のみにすることができました。
pgAdminから、入力したURLがデータベースに保存されているか確認する
https://hacknote.jp/archives/21807/
これをもとに確認を行いました。
一覧画面でURLをリンク付きで表示できるようにする
https://hacknote.jp/archives/14501/ このハックを読みながら進めていきました。その中でリンク付きで表示するのにデータベースから入力された値をどこで呼び出しているかというところでgetResultDataというところで処理が行われていると書かれていたので、その関数を見てみたところ
protected Object getResultData(EipTTest record) { try { TestResultData rd = new TestResultData(); rd.initField(); rd.setTestId(record.getTestId().intValue()); rd.setTestName(ALCommonUtils.compressString( record.getTestName(), getStrLength())); rd.setUpdateDate(record.getUpdateDate()); rd.setAclEditTestOther(hasAclEditTestOther); rd.setAclDeleteTestOther(hasAclDeleteTestOther); return rd; } catch (Exception ex) { logger.error("test", ex); return null; } }
となっていたのですがTestResultDataという型がどういうものかわからなかったので探したのですが、TestSelectData.javaの中にはそのクラスの宣言は見つからず、、、、 このクラスと同じ名前のTestResultData.javaというファイルがあったのでそこでクラス宣言を探してみると36行目に
public class TestResultData implements ALData {
というのを見つけたのですが、implementという予約語の意味がわからなかったので、調べてみたところAlDataというインターフェースを実装しているという意味だということがわかりました。
参考にしたのは
http://msugai.fc2web.com/java/interface.html
しかし先程の記事だけでは完成させることができませんでした。 今度は
https://hacknote.jp/archives/14241/ を見ながら進めました。getResultDataDetailに追加した
rd.setUrl(record.getUrl());
でsetUrl()がTestResultDataで宣言されていないと出てしまったので下のコードを追加しました。
public void setUrl(String string) { url.setValue(string); }
それでも上手く行かなかったので、下記のコードも追加して解決しました。
public String getUrl() { return (url.getValue()); }
詳細画面では http://capture.heartrails.com/help/make_thumbnail を使ってサムネイルを表示
https://hacknote.jp/archives/13258/ これを見ながら進めていきました。
詳細画面でURLからドメイン部分だけを抜き出して表示してみよう。
これは前のインターンの方のいろんなhackを見たのですが、正規表現というものが必要らしいということがわかったので、正規表現について調べていました。
http://nobuo-create.net/seikihyougen/ 正規表現については上の記事を見て少し理解はしましたが、まだどのようにプログラムを作ればいいかというところにはつながっていないので次回までにもっと深く理解していきたいと考えています。