Velocity vs JSPでVelocityを称えるスレ
Velocityは、JSPのようにめんどくさいタグなどの記述が必要ない。
Velocityは、ブラウザやHTMLのツールで表示するのにレイアウトが
ほとんど崩れない。複雑な処理もVelocityToolsで対応できる。
このあたりを踏まえてJSPより、Velocityのほうが
使いやすいことを称えよう。 JSPと組み合わせて使うものではないの?ベロ
2グッシ 単体でも十分よろしいかとおもわれる。
JSPで組み合わせるとは、個別にViewの機能を切り替える
ということだろうか。 vs JSP なので、一応Web限定と言うことで。
ただ、Velocityは汎用的なテキストテンプレートエンジンなことは
言うまでも無い。 言うまでもない、か。
何が「言うまでもない」だよ。
おまえな、ただ単に「言うまでもない」って言いたいだけちゃうんかと。 JSPとの、比較をしたかっただけなので
他の部分は、考慮しないと言うことでお願いしたい。
>>8 すまん >>9
潔いな。
「漢(をとこ)」を感じたぞ。
キュン♥ あまり、JSPの不便さに憤慨している人おらんのかな?
タグだらけで、メンテナンスがひどくつらい。 別に、<c:forEach>と書くか#foreachと書くかだけの違いだから。
ツールのサポートとかタグファイルとか考えるとJSPの方がいい。
ELにくらべてVTLが非常に高機能とも思わないし。 Velocity の ブラウザでのレイアウト確認の優位性について
JSPのループ処理の場合、
<table>
<c:forEach 省略>
<tr>
<td>おらおら</td>
<td>ほげほげ</td>
</tr>
</c:forEach>
</table>
こういう表記が多いが
Velocityの場合、
<table>
<!-- #foreach(省略) -->
<tr>
<td>おらおら</td>
<td>ほげほげ</td>
</tr>
<!-- #end -->
</table>
VTLがHTMLに影響しないから、ブラウザで
レイアウト確認できて便利!
どうよ?いまいち優位性無い?
実際にJSPごりごり書いてる人どう?
JSPの最初にうだうだ宣言文を書くのもめんどくさい。 >>13
<table>
<!-- <c:forEach 省略> -->
<tr>
<td>おらおら</td>
<td>ほげほげ</td>
</tr>
<!-- </c:forEach> -->
</table>
にすりゃいいんじゃね? そりゃ、そうだな。
ループでは、JSP と Velocity 両方ともコメントアウトできるな。
こりゃ引き分けやな
値を指定する時はどうだ?
JSP
<bean:write bean="c" property="hoge"/>
Velocity
${c.hoge}
JSP ながくね?
あと、フォーム部分に値をいれるとき
struts のタグライブラリーなんか使うと
JSP
<html:text bean="hoge" property="hogehoge"/>
Velocity
<input type="text" name="hoge" value="${form.hogehoge}">
HTMLからコーディングを改変するのVelocityの方が楽やろ。 値の指定
JSP
${c.hoge}
Velocity
${c.hoge}
かわらん。 strutsのタグライブラリに関してはそのとおりだね。
素のHTMLとの相性に関してはJSPやっぱり不利なんだよ。
ただ、めんどくさいということに関しては、そんなに変わりはないと思われ。
標準であるというJSPのメリットと天秤にかけるものだと思う。
Nirvanaが一般的なタグで使えるようになるととってもいいんだけどねぇ。 JSP + EL + JSTL などのtaglib の組み合わせは、
初期設定やら、使えるタグの仕様やらややこしくてかなわねぇ。
Velocity + VelocityTools の組み合わせの方が
シンプルでないか。
ELに関してはisELIgnoredとか書かない限り使えるし。
JSTLもstandard.jarとjstl.jarを/WEB-INF/libにほりこむだけ。
その2つのjarも、Tomcatなら/webapps/jsp-examples/WEB-INF/libあたりからもってくればいいからダウンロードの必要はない。
気が利いたIDEなら、JSTLを組み込むメニューがあるし、タグの補完もしてくれる。
JSTLタグの仕様も、c:ifとc:forEachくらい知ってればいいんじゃないかと。
Velocity+VelocityToolsの使い方の方が、資料探すことを考えるとややこしくないかい? それと、JSP+JSTLは標準でかなり普及している以上、知らないわけにはいかないと思う。
WebのViewとしてVelocityを使う場合には、JSP+JSTLは知っている上であえてVelocityの勉強もする、ということになるから、かなり目に見えるアドバンテージがないと大々的に採用するのは難しいと思われ。
全社的にVelocityを採用するとしても、JSPでかかれた資料も多いわけで。 標準かどうかの差で、資料や、ドキュメントの多さが違うので
JSP+その他諸々のToolにやや有利な点がおおい。
しかし、Velocity自体の仕様を考えた場合、そんな複雑資料無くても
Jakarutaのドキュメント読む程度で十分事足りる気がする。
30分もあれば十分。大量に乱立するタグライブラリーの仕様を見比べ
最適なライブラリを探し当てる手間と労力のほうが大変な気がする。
そもそも、インタプリター的な振る舞いを、タグで記述する処理系は
やや抵抗感がある。
まぁ、標準的な仕様と言うことでこれは身に付けなければ
しょうがない登竜門ということになりますかな。 しかし、Velocityを称えるスレなので、Velocityのいいとこ
上げてください。 JSPのタグライブラリ、そんなに乱立してるかなぁ。
とりあえず条件分岐と繰り返しに関してはJSTLのcoreでいいわけだし、Strutsなどのそれぞれのライブラリで提供されているタグに関してはJSPタグでもVeloでも覚えないといけないことに大差ないね。
JSTLが出てくる前に作られたStrutsのbeanタグがちょっと混乱させているのかもしれないけど。
Strutsタグはhtmlタグとbean:messageしか使わない。
VelocityはWebのViewじゃないもののテンプレートに使えるので便利です。 JSPのタグライブラリは、Sunの中の人がコールドフュージョンにメロメロだっただけだね。きっと。
実際問題としては、HTMLをパースする技術が成熟してなかったってとこかな。
Tape形式サイコー。Nirvanaマンセー。 正確にいえば、JSP2.0からだね。
${a}を<c:out value="${a}"/>と書かないといけないなら、JSPめんどくさいねという意見に賛成するし。 Velocity だと中にJavaコード埋め込めない?
だとすればものすごいアドバンテージだと思うが。
JSPの何が嫌かって、Javaコードが書けてしまう点。最悪だ。ありゃ。 Velocity Tools で、簡単にコードを埋め込めるね。最高
>>28
ということで、Velocityも最悪だ。ありゃ。 >29
自分では書かなくても書くやつが出る。
>31
どっちも最悪だな。。 というか、JSPにどんなコード書くの?
なんかJSPにコード書く余地って残らないような気がするんだけど。 なんかいろいろ書いてくれるよ。
ロジック層と分けてるはずなのに
思いっきりロジック書く。 コード書く力がありあまった、元気なおこさまですこと。 スレの趣旨とは外れますが、他に該当スレがないようなので質問させて下さい。
Velocityでテンプレートファイルを読み込む際に、引数やユーザの入力などにより、
フルパスで指定されたテンプレートファイルを読み込む方法はあるのでしょうか?
開発者ガイドのリソースローダの設定を読むと、予め指定propertiesファイルで指定した
ディレクトリしか見てくれないようなのですが・・・。
参考サイトなどの情報でもいいので、どなたかご存知でしたら宜しくお願いします。 フルパスが必要な状況は、ふつうに考えられると思うが。
オレには今必要ないから、やりかたを調べる気はないが。 >>37
テンプレートを引数で受け取ってマージするようなプログラムを作ろうとしているんです。
その際にテンプレートファイルのディレクトリを固定したくないので、できればフルパスで指定
できるようにしたいな、と思いまして・・・。
>>38
今はFileResourceLoaderを使ってなんとか出来ないかと考えています。
もう少し自分で調べてみます。 velocity.properties の設定でなんとかなるとおもう JSP2.0ってweblogicで使えないんじゃ?
いつ対応すんのかな。 FileResourceLoaderでpathを/に設定し、引数で受け取ったフルパスの先頭の/を削除したものを
Velocity.getTemplate()に渡す事でどうやら希望通りの動作はイケそうです。
velocity.propertiesの設定は↓な感じです。
resource.loader=file
file.resource.loader.class=org.apache.velocity.runtime.resource.loader.FileResourceLoader
file.resource.loader.path = .,/
やはり公式のドキュメントはしっかり読まないと駄目ですね。
お騒がせしました。 JSPって元々ASPをパクったものやん。
んで、ASPはASP.NETになって、コードを別ファイルへきれいに分離できるようになった。
JSFがはやるかどうかは知らんけど、JSPに先の展開がないのはほぼ間違いない。
Velocityは細かいことやろうとするとJSPと変わらんかもしれんが、
どっちかっつーと仕様の管理がしやすいと思う。 Velocity+Strutsでなんもせんと
リクエストパラメータが文字化けする。
フィルターでエンコードせなやってられん それは、VelocityもStrutsも関係ない話だと思うが。 便利なVelociyToolを集めてるとこって、誰か知らない? ERROR velocity - ResourceManager : unable to find resource 'VM_global_library.vm' in any resource loader.
って出るんですがどないすればよかとですか? VM_global_library.vm ってファイルの位置がまちがっているか
指定されていないのでは、デフォルトは、WEB-INFの中におくんじゃなかったっけ? すみませんが,質問です.
Date 型のオブジェクト date を,
<bean:write name='date' format='yyyy年MM月dd日' />
と書くことは,Velocity ではどうやるのでしょうか?
テンプレートの側に format を埋め込みたいのです.
vm ファイルの中で、大きなファイルを parse してその中のマクロを呼び出そうとすると、
時失敗してマクロが置換されずに #マクロ名 がそのまま出てしまうことがあります。
どう防いだらいいのでしょうか?
velocity.properties の cache ON, OFF は切り替えてみましたが、だめでした。 うーむ、一ヶ月以上書き込みがなかったりするスレなのか。 JSP2.0のおかげで、JSPの代わりにVelocity使うメリットは無くなったからね。 一時期よく言われていたStruts+Velocityも、StrutsがJSFの方によっていっているからVelocityは意味をなさなくなったね。
でも個人的には、Web以外のところでVelocityはまだまだやれると思っている。
それがどこか知りたい。
普通にテキストファイル出力するときはVelocityでしょ。
まだまだやれるとかではなく、棲み分けだよ。 いや、だから、どういった目的とか機能とかでそのテキストファイル出力を使う(使える)のかという意味なんだけど。 #macro( 〜
で定義するマクロで引数の数を可変にしたいのですが、
Java のオーバロードみたいなことは出来ないのでしょうか? >61
Java のオブジェクトにアクセスできて
かつ定型的に記述できるものと言えば、
ソースコードジェネレーションがベタな用途かと。
この用途なら多少遅くても誰も困らないし。 velocityって、テンプレートファイルを読み込んでストリームに吐き出しますが、
テンプレートファイルをStringにしてわたし、ストリームでなくString結果を取得することはできますか? それはVelocityではなくJavaAPIの知識の問題だな
StringWriter こんなかんじ?
Template template = Velocity.getTemplate(filename);
StringWriter writer = new StringWriter();
template.merge(vContext, writer);
String str = writer.toString();
JetspeedのViewの部分で、JSPかVelocityのどっちかを標準として使おうと思ってんだが、どっちがいいだろうか・・?
JSPは開発メンバー全員理解してる
Veloは俺はもちろん全員知らない
でもJetspeed的にはどちらなのか・・? むしろ、WebのテンプレートにVeloを使う意味がない。 Jetspeed1はviewがほとんどVeloなんだよ。
だから67は心配してんだろ
JSTL遣えばよい Velocityのイベントハンドラ使って「デフォルトでエスケープされるように」してる俺は勝ち組
ttp://takagi-hiromitsu.jp/diary/20051227.html#p03 >>70
デフォルトでエスケープされるようにしたときに、ある箇所でだけエスケープさせないようにするにはどうしてる? 1.リファレンスのネーミングコンベンションででエスケープしないものを決めておく
2.なんかてきとーなオブジェクトでラップされてたらエスケープしないと決めておく java.lang.NullPointerException
at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:831)
at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:813)
at org.apache.velocity.runtime.RuntimeSingleton.getTemplate(RuntimeSingleton.java:285)
at org.apache.velocity.app.Velocity.getTemplate(Velocity.java:469)
上記のような例外が発生します。原因がわかる方いらっしゃいましたらご助力おねがいいたします。
ResourceManager?の生成に失敗してるのかもしれません。
velocity 1.4 >>73
キーワードとして「RuntimeInstance.java:831」でぐぐると、
http://forum.java.sun.com/thread.jspa?threadID=691936&messageID=4022256
というのがありました。
どうやらresource loaderの設定が必要なようです。
以下のサンプルで動くようになったと報告されています。
Properties p = new Properties();
p.setProperty( "resource.loader", "class" );
p.setProperty( "class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader" );
Velocity.init(p);
Template template = Velocity.getTemplate( "report_email_html.vm" );
余談ですが、「Velocity」「NullPointerException」などで検索すると膨大にヒットしてしまい、役に立ちません。
こんなときは、エラー行番号を含めて検索するとそのものズバリが見つかったりします。 Velocity使うとCommons LoggingやLog4jが無いと怒られたりしない?
Apache Maven2のpom.xmlで解決させているけど。
Velocity最強の理由は制御コードをゴミとして撒き散らかさないことにある
HTML出力されたソースを除いたとき、従来のHTMLのそれと同じ姿で出力されるVelocityは美しい
JSPだと<option>タグあたりは目も当てられない糞コードで、ああきもい・・・
よってVelocityが最強だと思います。 Velocity に、Map を new できるようにしたいんだが
どうすればよい? Web + SQL + メール のWebでよくありがちな製作で
Velocity なら、
@HTMLコーディングOK
ASQL文ごりごり作成OK
BメールテンプレートコーディングOK
テキスト処理が一括してできるのがよろしい。 ダウンロードできなくなってるんだけど一時的なものかな。
なんか結構前にも同じ状況だった気がするけど。
死滅した? >>79
オレも困っている。仕方ないのでfreemakerに行こうか迷い中 Velocityがダウンロードできないってのありえない気がするけど
いい機会だからfreemarker試してみるのも吉。
正直、Velocityよりよくできてるのは確かなんだけど、でもVelocityでもそんなに不満がないのも確か。
でもHibernateToolsはVelocityすててFreemarkerにしたね。 なんか天下のJakarta様ですら切れたリンクそのまま放置だもんな。
これだからOpenSourceは嫌だ。 80です。
レスありがと>>81-82
Velocityのダウンロードサイト復活したみたいです。
だが、この間に漏れはFreemarkerガイドを読んでしまったのだ。
FreemarkerでHelloWorldしてしまったのだ。
結局、Velocityはダウンロードしなかった。
さよならVelocity。 ちゃんとMVCでコード書けばjspもattributeの参照だけですませられるから
taglibで十分なことに気づいた。
さよならVelocity。 jspと比較するからだめなんじゃん。
単体なら非常に使い道ある。 結論:JSF >>Struts >>>>>>>>> Velocity 正直、
JSF >>>>> Velocity
マニアックなView作るときカスタムタグ作らなきゃだけど、
頭抱えるほど難しくはない。
Tomahawk楽しいよね。
ポップアップカレンダーがタグ一つでできるのは、やっぱ嬉しい。
それでユーザが許してくれるかは別問題だけど・・・
JSFもStrutsも、Velocityと組み合わせて使えるのだが・・・ JSFは100歩譲って認めるとしても
Struts と Velocity はレイヤがまったく異なるだろ。 >>85
>ちゃんとMVCでコード書けばjspもattributeの参照だけですませられるから
>taglibで十分なことに気づいた。
kwsk
>>86
>つうか、式言語使えばtaglibもイランだろ
kwsk
どうやったらこんなトンデモ論がでてくるのか不思議。 というか、前後関係見ても意味がわからんのなら、おまえの頭がトンデモだな。 webプログラミングの学習をしている者ですがstart tomcatアイコンを
クリックするとjava.net.BindException:address already use...という
メッセージが出て立ち上がりませぬ。
理由と対処法を知っている親切な方がいれば教えてください。
興味からApache/2.0.55と同時に立ち上げたのが不味かった様な気も
するのですが。
>>99
Apacheと同時じゃなくて、Tomcatが2重起動
あるいは別のTomcatがあればそっちが起動している可能性が高い。
「start tomcatアイコン」とあるから、Windows Installerで
インストールしたのだろう。Windowsサービスとして起動していないか?