<?xml version="1.0" encoding="Shift_JIS"?>
<document>

  <properties>
    <author email="jon@latchkey.com">Jon S. Stevens</author>
    <title>You make the decision - Sample Application</title>
    <translator>熊坂祐二</translator>
    <original>ymtd/ymtd-sampleapp</original>
  </properties>

<body>

<section name="サンプルアプリケーション">

<p>
あなたが特別に直接Javaと関連がある対処する問題へのあなたの
アプリケーションをコード化する必要がないことは、Velocity開発者の信念です。
</p>

<p>
言い換えると、
JSP/Strutsコミュニティの多くの議論のうちの1つは、その効果が何かということです:
「これは、JSPを使うことの粗末な例です。」
これが真実かもしれないが、問題の事実はほとんど、
利用できるあらゆる例が本当にJSPを使うことの粗末な例であるということです。
これは、あなたのページにおいてJavaコードをはめ込むことは悪いものであると言うステートメントに戻ります。
そうです、今や、我々はそれを全て知っています。
</p>

<p>
人がJSPについてある<a
href="http://www.javaworld.com/">JavaWorld</a>で利用可能な記事を読むならば、
あらゆる一つの記事が1つのものを持ってほとんど、あるいは、
別のそれで、ツールの粗末な使い方を示します。
なぜ、多くの（明らかに）優秀な人々がツールを使用することの正しい例を考え出す
ことができなのでしょうか？
真実は、正しくツールを使用することは非常に難しいということです。
</p>

<p>
Strutsは、それをより簡単で正しい方法を示すために試みるようにする
優れた仕事をしています。しかし、それが単にJSPの本来のデザインの
醜さを隠しています。
</p>

<p>
あなたがクラスを拡張するオブジェクト指向設計命令は、機能をベース・クラスに加えます。
ベース・クラスの中のpublicに利用できるメソッドは、それを拡張するクラスが、さらに利用できます。
StrutsをJSPのトップに置くことは、JSPのイボを修理しません。
あなたの開発者がそれらを見つけるまで、それは単にそれらを隠します。
</p>

<source><![CDATA[
<%-- toolview.jsp --%>

<%
  String title = "Tool Listing";
  String deck = "A list of content creation tools";
  String desc = "Without tools, people are nothing more than animals.";
%>

<%@ include file="/header.jsp" %>

<%@ page session="false" %>
<%@ page errorPage="/errorTaker.jsp" %>

<jsp:useBean id="toolbean" class="ToolBean" scope="application">
  <jsp:setProperty name="toolbean" property="toolsFile"
                value='<%= application.getInitParameter("toolsFile") %>' />
</jsp:useBean>

<%
  Tool[] tools = toolbean.getTools(request.getParameter("state"));

  for (int i = 0; i < tools.length; i++) {
    Tool tool = tools[i];
%>
  <HR SIZE=2 ALIGN=LEFT>

  <H3>
  <%= tool.name %>

  <% if (tool.isNewWithin(45)) { %>
    <FONT COLOR="#FF0000"><B> (New!) </B></FONT>
  <% } else if (tool.isUpdatedWithin(45)) { %>
    <FONT COLOR="#FF0000"><B> (Updated!) </B></FONT>
  <% } %>

  </H3>
  <A HREF="<%= tool.homeURL %>"><%= tool.homeURL %></A><BR>

  <%= tool.comments %>

<% } %>

<%@ include file="/footer.jsp" %>
]]></source>

<source><![CDATA[
JSP の空白保存規則のため、scriptletsでif/else文を書くとき、
あなたは慎重にならなければなりません。
以下のコードは、*動作しません*。

  <% if (tool.isNewWithin(45)) { %>
    <FONT COLOR=#FF0000><B> (New!) </B></FONT>
  <% } %>
  <% else if (tool.isUpdatedWithin(45)) { %>
    <FONT COLOR=#FF0000><B> (Updated!) </B></FONT>
  <% } %>

このコードでは、バックグラウンドサーブレットは、if と else の
間で改行を出力しようするので、

「if」の指定なしに「else」が使用された

という不明瞭なコンパイルエラーを発生します。

]]></source>

<hr noshade="true" size="1"/>

<p>
これは、上記の例をVelocityに翻訳したバージョンです
</p>

<source><![CDATA[
## toolview.vm

#set ($title = "Tool Listing")
#set ($deck = "A list of content creation tools")
#set ($desc = "Without tools, people are nothing more than animals." )

#parse ("header.vm")

$toolbean.setToolsFile($application.getInitParameter("toolsFile"))

#set ($tools = $toolbean.getTools($request.getParameter("state")))

#foreach ($tool in $tools)
  <HR SIZE=2 ALIGN=LEFT>

  <H3>
  $tool.Name

  #if ($tool.isNewWithin(45))
    <FONT COLOR="#FF0000"><B> (New!) </B></FONT>
  #elseif (tool.isUpdatedWithin(45))
    <FONT COLOR="#FF0000"><B> (Updated!) </B></FONT>
  #end
  </H3>
  <A HREF="$tool.homeURL">$tool.homeURL</A><BR>

  $tool.comments
#end

#parse ("footer.vm")
]]></source>

<p>
あなたが判断してください。
</p>
<p>
<strong>[ <a href="ymtd-javabeans.html">JavaBeans</a> &lt;- 前 | 
    次 -&gt; <a href="./ymtd-taglibs.html">Taglibs</a> ]
</strong></p>

</section>

</body>
</document>
