<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
 >

  <channel rdf:about="http://sourceforge.jp/projects/wicket-ja/wiki/!feeds/list">
    <title>Wicket-ja Wiki</title>
    <link>http://sourceforge.jp/projects/wicket-ja/wiki/!feeds/list</link>
    <description>
      SourceForge.jp Wiki pages for Wicket-ja project.    </description>
        <dc:date>2010-03-09T23:05:10+09:00</dc:date>
        <items>
      <rdf:Seq>
                <rdf:li rdf:resource="http://sourceforge.jp/projects/wicket-ja/wiki/ListDataProvider%E3%81%AEmodel%28%29%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%8C%E3%80%81%E5%90%8C%E3%81%98ModelObject%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%E3%81%AF%E5%90%8C%E3%81%98Model%E3%82%92%E8%BF%94%E3%81%99%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/wicket-ja/wiki/FrontPage" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/wicket-ja/wiki/Form%E3%82%92%E3%82%B5%E3%83%96%E3%83%9F%E3%83%83%E3%83%88%E3%81%97%E3%81%A6%E3%83%90%E3%83%AA%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%A8%E3%80%81%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%82%84%E3%83%A9%E3%82%B8%E3%82%AA%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AA%E3%81%A9%E3%80%81%E5%85%A5%E5%8A%9B%E9%A0%85%E7%9B%AE%E3%81%8C%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%E3%81%95%E3%82%8C%E3%81%A6%E3%81%97%E3%81%BE%E3%81%86" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/wicket-ja/wiki/Wicket%E3%83%BBMaven2%E3%83%BBEclipse%E3%83%BBmaven-eclipse-plugin%E3%81%AE%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B%E3%81%A7html%E3%81%8Ctarget%2Fclasses%E3%81%AB%E3%82%B3%E3%83%94%E3%83%BC%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/wicket-ja/wiki/Bookmarkable%E3%81%AA%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%AE%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%81%AB%E3%80%8C%2F%E3%80%8D%E3%81%A8%E3%81%8B%E3%81%8C%E5%85%A5%E3%82%8B%E5%A0%B4%E5%90%88" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/wicket-ja/wiki/Ajax%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%81%AE%E8%A1%A8%E7%A4%BA%E9%9D%9E%E8%A1%A8%E7%A4%BA%E3%82%92%E5%88%B6%E5%BE%A1%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/wicket-ja/wiki/AjaxLazyLoadPanel%E3%82%84IndicatingAjaxButton%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%AB%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E7%94%BB%E5%83%8F%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/wicket-ja/wiki/%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%A7%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%AE%E5%80%A4%E3%82%92%E3%82%B5%E3%83%96%E3%83%9F%E3%83%83%E3%83%88%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/wicket-ja/wiki/Wicket%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9FWeb%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AA%E3%81%A9" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/wicket-ja/wiki/%E7%AC%AC%E4%B8%80%E5%9B%9E" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/wicket-ja/wiki/%E3%82%88%E3%81%8F%E3%81%82%E3%82%8B%E3%82%A8%E3%83%A9%E3%83%BC" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/wicket-ja/wiki/Maven2%E3%81%A7QuickStart" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/wicket-ja/wiki/Wiki%E7%B7%A8%E9%9B%86%E3%83%86%E3%82%B9%E3%83%88" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/wicket-ja/wiki/%E3%82%B5%E3%83%96%E3%83%9F%E3%83%83%E3%83%88%E3%81%97%E3%81%9F%E3%81%82%E3%81%A8%E3%83%A2%E3%83%87%E3%83%AB%E3%81%ABString%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%8F%E3%81%A6%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%9F%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E6%A0%BC%E7%B4%8D%E3%81%97%E3%81%9F%E3%81%84%E3%81%A8%E3%81%8D%E3%81%AF" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/wicket-ja/wiki/SideBar" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/wicket-ja/wiki/Wicket-ja%E3%81%AE%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AE%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%BE%97%E3%82%8B%E3%81%AB%E3%81%AF" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/wicket-ja/wiki/html%E3%81%8C%E8%A6%8B%E3%81%A4%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E3%82%A8%E3%83%A9%E3%83%BC" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/wicket-ja/wiki/%E3%82%B9%E3%83%86%E3%83%BC%E3%83%88%E3%83%AC%E3%82%B9%E3%81%AA%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%A8%E3%81%AF" />
              </rdf:Seq>
    </items>
  </channel>

      <item rdf:about="http://sourceforge.jp/projects/wicket-ja/wiki/ListDataProvider%E3%81%AEmodel%28%29%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%8C%E3%80%81%E5%90%8C%E3%81%98ModelObject%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%E3%81%AF%E5%90%8C%E3%81%98Model%E3%82%92%E8%BF%94%E3%81%99%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF">
    <title>ListDataProviderのmodel()メソッドが、同じModelObjectに対しては同じModelを返すようにするには</title>
    <link>http://sourceforge.jp/projects/wicket-ja/wiki/ListDataProvider%E3%81%AEmodel%28%29%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%8C%E3%80%81%E5%90%8C%E3%81%98ModelObject%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%E3%81%AF%E5%90%8C%E3%81%98Model%E3%82%92%E8%BF%94%E3%81%99%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF</link>
    <dc:identifier>ListDataProviderのmodel()メソッドが、同じModelObjectに対しては同じModelを返すようにするには</dc:identifier>
    <dc:date>2010-03-09T23:05:10+09:00</dc:date>
        <description>
      <![CDATA[== !ListDataProviderのmodel()メソッドが、同じ!ModelObjectに対しては同じModelを返すようにするには

　!ListDataProviderのmodel()メソッドは、毎回新しいModelインスタンスを作成します。そのため、!GridViewや!DataViewにsetにおいてsetItemReuseStrategy(!ReuseIfModelsEqua]]>
    </description>
    <content:encoded>
      <![CDATA[<h2 id="h2-.21ListDataProvider.E3.81.AEmodel.28.29.E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.8C.E3.80.81.E5.90.8C.E3.81.98.21ModelObject.E3.81.AB.E5.AF.BE.E3.81.97.E3.81.A6.E3.81.AF.E5.90.8C.E3.81.98Model.E3.82.92.E8.BF.94.E3.81.99.E3.82.88.E3.81.86.E3.81.AB.E3.81.99.E3.82.8B.E3.81.AB.E3.81.AF">ListDataProviderのmodel()メソッドが、同じModelObjectに対しては同じModelを返すようにするには</h2><p>　ListDataProviderのmodel()メソッドは、毎回新しいModelインスタンスを作成します。そのため、GridViewやDataViewにsetにおいてsetItemReuseStrategy(ReuseIfModelsEqualStrategy.getInstance())を呼び出しても、Modelが毎回異なるため、Itemの再利用が行われません。
</p><p>　次のようにListDataProviderを拡張すれば、同じModelインスタンスが使われるでしょう。
</p><pre>
<B><FONT COLOR="#A020F0">public</FONT></B> <B><FONT COLOR="#A020F0">class</FONT></B> ReuseModelListDataProvider&lt;T <B><FONT COLOR="#A020F0">extends</FONT></B> Serializable&gt; <B><FONT COLOR="#A020F0">extends</FONT></B> ListDataProvider&lt;T&gt;{
    <B><FONT COLOR="#A020F0">private</FONT></B> <B><FONT COLOR="#A020F0">static</FONT></B> <B><FONT COLOR="#A020F0">final</FONT></B> <B><FONT COLOR="#A020F0">long</FONT></B> serialVersionUID = -4848228362992249051L;

    Map&lt;T, IModel&lt;T&gt;&gt; modelMap = <B><FONT COLOR="#A020F0">new</FONT></B> HashMap&lt;T, IModel&lt;T&gt;&gt;();

    <B><FONT COLOR="#A020F0">public</FONT></B> ReuseModelListDataProvider(List&lt;T&gt; list) {
        <B><FONT COLOR="#A020F0">super</FONT></B>(list);
    }

    @Override
    <B><FONT COLOR="#A020F0">public</FONT></B> IModel&lt;T&gt; model(T object) {
        IModel&lt;T&gt; model = modelMap.get(object);
        <B><FONT COLOR="#A020F0">if</FONT></B>(model == <B><FONT COLOR="#A020F0">null</FONT></B>) {
            model = <B><FONT COLOR="#A020F0">new</FONT></B> Model&lt;T&gt;(object);
            modelMap.put(object, model);
        }
        <B><FONT COLOR="#A020F0">return</FONT></B> model;
    }

    <I><FONT COLOR="#B22222">/**
     * Modelのキャッシュを破棄するときにはこれを呼ぶ
     */</FONT></I>
    <B><FONT COLOR="#A020F0">public</FONT></B> <B><FONT COLOR="#A020F0">void</FONT></B> clearModelCache() {
        modelMap = <B><FONT COLOR="#A020F0">new</FONT></B> HashMap&lt;T, IModel&lt;T&gt;&gt;();
    }
}
</pre>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/wicket-ja/wiki/FrontPage">
    <title>FrontPage</title>
    <link>http://sourceforge.jp/projects/wicket-ja/wiki/FrontPage</link>
    <dc:identifier>FrontPage</dc:identifier>
    <dc:date>2010-03-09T21:01:56+09:00</dc:date>
        <description>
      <![CDATA[= Wicket-ja Wiki =

Wicket-ja Wikiページへようこそ。

このWikiはWicketについての日本語情報を集積していくために用意されました。
Wicket-jaメーリングリストやブログなどで紹介された情報をどんどん登録していきましょう。

[[PageOutline]]

== インデックス

=== 初めの一歩

 * [Maven2でQ]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-Wicket-ja.20Wiki">Wicket-ja Wiki</h1><p>Wicket-ja Wikiページへようこそ。
</p><p>このWikiはWicketについての日本語情報を集積していくために用意されました。
Wicket-jaメーリングリストやブログなどで紹介された情報をどんどん登録していきましょう。
</p><div class="pageoutline"><div class="pageoutline-title"><div class="action"><button type="button" onClick="javascript:togglePageOutline(this)"><img src="//static.sourceforge.jp/wiki/images/icons/roll-up.gif" border="0"></button></div>Outline</div><ol><li><a href="#h1-Wicket-ja.20Wiki">Wicket-ja Wiki</a>
<ol><li><a href="#h2-.E3.82.A4.E3.83.B3.E3.83.87.E3.83.83.E3.82.AF.E3.82.B9">インデックス</a>
<ol><li><a href="#h3-.E5.88.9D.E3.82.81.E3.81.AE.E4.B8.80.E6.AD.A9">初めの一歩</a>
</li><li><a href="#h3-.E6.8A.80.E8.A1.93.E8.A7.A3.E8.AA.AC">技術解説</a>
</li><li><a href="#h3-.E3.83.88.E3.83.A9.E3.83.96.E3.83.AB.E3.82.B7.E3.83.A5.E3.83.BC.E3.83.86.E3.82.A3.E3.83.B3.E3.82.B0">トラブルシューティング</a>
</li><li><a href="#h3-Tips">Tips</a>
</li><li><a href="#h3-Wicket.E5.8B.89.E5.BC.B7.E4.BC.9A">Wicket勉強会</a>
</li><li><a href="#h3-Wicket.E3.82.92.E4.BD.BF.E3.81.A3.E3.81.9FWeb.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AA.E3.81.A9">Wicketを使ったWebアプリケーションなど</a>
</li><li><a href="#h3-Wiki.E7.B7.A8.E9.9B.86.E3.83.86.E3.82.B9.E3.83.88">Wiki編集テスト</a>
</li></ol></li></ol></li></ol></div>
<h2 id="h2-.E3.82.A4.E3.83.B3.E3.83.87.E3.83.83.E3.82.AF.E3.82.B9">インデックス</h2><h3 id="h3-.E5.88.9D.E3.82.81.E3.81.AE.E4.B8.80.E6.AD.A9">初めの一歩</h3><ul><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/Maven2%E3%81%A7QuickStart">Maven2でQuickStart</a>
</li></ul><h3 id="h3-.E6.8A.80.E8.A1.93.E8.A7.A3.E8.AA.AC">技術解説</h3><ul><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/%E3%82%B9%E3%83%86%E3%83%BC%E3%83%88%E3%83%AC%E3%82%B9%E3%81%AA%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%A8%E3%81%AF">ステートレスなページとは</a>
</li><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/%E3%82%B5%E3%83%96%E3%83%9F%E3%83%83%E3%83%88%E3%81%97%E3%81%9F%E3%81%82%E3%81%A8%E3%83%A2%E3%83%87%E3%83%AB%E3%81%ABString%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%8F%E3%81%A6%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%9F%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E6%A0%BC%E7%B4%8D%E3%81%97%E3%81%9F%E3%81%84%E3%81%A8%E3%81%8D%E3%81%AF">サブミットしたあとモデルにStringではなくて指定したオブジェクトを格納したいときは</a>
</li><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%A7%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%AE%E5%80%A4%E3%82%92%E3%82%B5%E3%83%96%E3%83%9F%E3%83%83%E3%83%88%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF">リンクでフォームの値をサブミットするには</a>
</li><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/AjaxLazyLoadPanel%E3%82%84IndicatingAjaxButton%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%AB%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E7%94%BB%E5%83%8F%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF">AjaxLazyLoadPanelやIndicatingAjaxButtonを使用した場合に表示される画像を変更するには</a>
</li><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/ListDataProvider%E3%81%AEmodel%28%29%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%8C%E3%80%81%E5%90%8C%E3%81%98ModelObject%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%E3%81%AF%E5%90%8C%E3%81%98Model%E3%82%92%E8%BF%94%E3%81%99%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF">ListDataProviderのmodel()メソッドが、同じModelObjectに対しては同じModelを返すようにするには</a>
</li></ul><h3 id="h3-.E3.83.88.E3.83.A9.E3.83.96.E3.83.AB.E3.82.B7.E3.83.A5.E3.83.BC.E3.83.86.E3.82.A3.E3.83.B3.E3.82.B0">トラブルシューティング</h3><ul><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/html%E3%81%8C%E8%A6%8B%E3%81%A4%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E3%82%A8%E3%83%A9%E3%83%BC">htmlが見つからないエラー</a>
</li><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/Wicket%E3%83%BBMaven2%E3%83%BBEclipse%E3%83%BBmaven-eclipse-plugin%E3%81%AE%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B%E3%81%A7html%E3%81%8Ctarget%2Fclasses%E3%81%AB%E3%82%B3%E3%83%94%E3%83%BC%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84">Wicket・Maven2・Eclipse・maven-eclipse-pluginの組み合わせでhtmlがtarget/classesにコピーされない</a>
</li><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/%E3%82%88%E3%81%8F%E3%81%82%E3%82%8B%E3%82%A8%E3%83%A9%E3%83%BC">よくあるエラー</a>
</li><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/Ajax%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%81%AE%E8%A1%A8%E7%A4%BA%E9%9D%9E%E8%A1%A8%E7%A4%BA%E3%82%92%E5%88%B6%E5%BE%A1%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88">Ajaxを使用してコンポーネントの表示非表示を制御する場合</a>
</li><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/Bookmarkable%E3%81%AA%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%AE%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%81%AB%E3%80%8C%2F%E3%80%8D%E3%81%A8%E3%81%8B%E3%81%8C%E5%85%A5%E3%82%8B%E5%A0%B4%E5%90%88">Bookmarkableなリンクのパラメータに「/」とかが入る場合</a>
</li><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/Form%E3%82%92%E3%82%B5%E3%83%96%E3%83%9F%E3%83%83%E3%83%88%E3%81%97%E3%81%A6%E3%83%90%E3%83%AA%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%A8%E3%80%81%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%82%84%E3%83%A9%E3%82%B8%E3%82%AA%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AA%E3%81%A9%E3%80%81%E5%85%A5%E5%8A%9B%E9%A0%85%E7%9B%AE%E3%81%8C%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%E3%81%95%E3%82%8C%E3%81%A6%E3%81%97%E3%81%BE%E3%81%86">Formをサブミットしてバリデーションエラーになると、チェックボックスやラジオボタンなど、入力項目がリセットされてしまう</a>
</li></ul><h3 id="h3-Tips">Tips</h3><ul><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/Wicket-ja%E3%81%AE%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AE%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%BE%97%E3%82%8B%E3%81%AB%E3%81%AF">Wicket-jaのサイトのソースコードを得るには</a>
</li></ul><h3 id="h3-Wicket.E5.8B.89.E5.BC.B7.E4.BC.9A">Wicket勉強会</h3><ul><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/%E7%AC%AC%E4%B8%80%E5%9B%9E">第一回</a>
</li></ul><h3 id="h3-Wicket.E3.82.92.E4.BD.BF.E3.81.A3.E3.81.9FWeb.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AA.E3.81.A9">Wicketを使ったWebアプリケーションなど</h3><ul><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/Wicket%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9FWeb%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AA%E3%81%A9">Wicketを使ったWebアプリケーションなど</a>
</li></ul><h3 id="h3-Wiki.E7.B7.A8.E9.9B.86.E3.83.86.E3.82.B9.E3.83.88">Wiki編集テスト</h3><ul><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/Wiki%E7%B7%A8%E9%9B%86%E3%83%86%E3%82%B9%E3%83%88">Wiki編集テスト</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/wicket-ja/wiki/Form%E3%82%92%E3%82%B5%E3%83%96%E3%83%9F%E3%83%83%E3%83%88%E3%81%97%E3%81%A6%E3%83%90%E3%83%AA%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%A8%E3%80%81%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%82%84%E3%83%A9%E3%82%B8%E3%82%AA%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AA%E3%81%A9%E3%80%81%E5%85%A5%E5%8A%9B%E9%A0%85%E7%9B%AE%E3%81%8C%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%E3%81%95%E3%82%8C%E3%81%A6%E3%81%97%E3%81%BE%E3%81%86">
    <title>Formをサブミットしてバリデーションエラーになると、チェックボックスやラジオボタンなど、入力項目がリセットされてしまう</title>
    <link>http://sourceforge.jp/projects/wicket-ja/wiki/Form%E3%82%92%E3%82%B5%E3%83%96%E3%83%9F%E3%83%83%E3%83%88%E3%81%97%E3%81%A6%E3%83%90%E3%83%AA%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%A8%E3%80%81%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%82%84%E3%83%A9%E3%82%B8%E3%82%AA%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AA%E3%81%A9%E3%80%81%E5%85%A5%E5%8A%9B%E9%A0%85%E7%9B%AE%E3%81%8C%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%E3%81%95%E3%82%8C%E3%81%A6%E3%81%97%E3%81%BE%E3%81%86</link>
    <dc:identifier>Formをサブミットしてバリデーションエラーになると、チェックボックスやラジオボタンなど、入力項目がリセットされてしまう</dc:identifier>
    <dc:date>2010-03-09T18:20:01+09:00</dc:date>
        <description>
      <![CDATA[= Formをサブミットしてバリデーションエラーになると、チェックボックスやラジオボタンなど、入力項目がリセットされてしまう =

Form上にListViewがありませんか？　ListViewのpopulateItemメソッド内でFormComponent類を作成してませんか？

ListViewのpopulateItemは、ページが表示されるたびに呼び出されます。そのため、バリデーショ]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-Form.E3.82.92.E3.82.B5.E3.83.96.E3.83.9F.E3.83.83.E3.83.88.E3.81.97.E3.81.A6.E3.83.90.E3.83.AA.E3.83.87.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.82.A8.E3.83.A9.E3.83.BC.E3.81.AB.E3.81.AA.E3.82.8B.E3.81.A8.E3.80.81.E3.83.81.E3.82.A7.E3.83.83.E3.82.AF.E3.83.9C.E3.83.83.E3.82.AF.E3.82.B9.E3.82.84.E3.83.A9.E3.82.B8.E3.82.AA.E3.83.9C.E3.82.BF.E3.83.B3.E3.81.AA.E3.81.A9.E3.80.81.E5.85.A5.E5.8A.9B.E9.A0.85.E7.9B.AE.E3.81.8C.E3.83.AA.E3.82.BB.E3.83.83.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.97.E3.81.BE.E3.81.86">Formをサブミットしてバリデーションエラーになると、チェックボックスやラジオボタンなど、入力項目がリセットされてしまう</h1><p>Form上に<a href="http://sourceforge.jp/projects/wicket-ja/wiki/ListView">ListView</a>がありませんか？　<a href="http://sourceforge.jp/projects/wicket-ja/wiki/ListView">ListView</a>のpopulateItemメソッド内で<a href="http://sourceforge.jp/projects/wicket-ja/wiki/FormComponent">FormComponent</a>類を作成してませんか？
</p><p><a href="http://sourceforge.jp/projects/wicket-ja/wiki/ListView">ListView</a>のpopulateItemは、ページが表示されるたびに呼び出されます。そのため、バリデーションエラーで元の表示が表示されたとたん、<a href="http://sourceforge.jp/projects/wicket-ja/wiki/ListView">ListView</a>内のすべての<a href="http://sourceforge.jp/projects/wicket-ja/wiki/FormComponent">FormComponent</a>は一から再作成されます。なのでリセットされたように見えます。
</p><p><a href="http://sourceforge.jp/projects/wicket-ja/wiki/ListView">ListView</a>のsetReuseItems(true)を呼び出すことで、<a href="http://sourceforge.jp/projects/wicket-ja/wiki/ListView">ListView</a>再作成処理を抑止できます。Form上で<a href="http://sourceforge.jp/projects/wicket-ja/wiki/ListView">ListView</a>を使って入力項目を作成する場合は、この操作は必須です。
</p><p>注意点として、setReuseItems(true)を呼び出すと、<a href="http://sourceforge.jp/projects/wicket-ja/wiki/ListView">ListView</a>の内容を最新に保つのはプログラマの仕事になります。<a href="http://sourceforge.jp/projects/wicket-ja/wiki/ListView">ListView</a>のremoveAll()を呼び出して全項目をいったん削除しない限り、同じ<a href="http://sourceforge.jp/projects/wicket-ja/wiki/ListItem">ListItem</a>オブジェクトが繰り返し使われます。
</p><p>以下、Javadocより引用
</p><pre>WARNING: though you can nest ListViews within Forms, you HAVE to set the setReuseItems property to true in order to have validation work properly. By default, setReuseItems is false, which has the effect that ListView replaces all child components by new instances. The idea behind this is that you always render the fresh data, and as people usually use ListViews for displaying read-only lists (at least, that's what we think), this is good default behavior. 
However, as the components are replaced before the rendering starts, the search for specific messages for these components fails as they are replaced with other instances. Another problem is that 'wrong' user input is kept as (temporary) instance data of the components. As these components are replaced by new ones, your user will never see the wrong data when setReuseItems is false.
</pre>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/wicket-ja/wiki/Wicket%E3%83%BBMaven2%E3%83%BBEclipse%E3%83%BBmaven-eclipse-plugin%E3%81%AE%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B%E3%81%A7html%E3%81%8Ctarget%2Fclasses%E3%81%AB%E3%82%B3%E3%83%94%E3%83%BC%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84">
    <title>Wicket・Maven2・Eclipse・maven-eclipse-pluginの組み合わせでhtmlがtarget/classesにコピーされない</title>
    <link>http://sourceforge.jp/projects/wicket-ja/wiki/Wicket%E3%83%BBMaven2%E3%83%BBEclipse%E3%83%BBmaven-eclipse-plugin%E3%81%AE%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B%E3%81%A7html%E3%81%8Ctarget%2Fclasses%E3%81%AB%E3%82%B3%E3%83%94%E3%83%BC%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84</link>
    <dc:identifier>Wicket・Maven2・Eclipse・maven-eclipse-pluginの組み合わせでhtmlがtarget/classesにコピーされない</dc:identifier>
    <dc:date>2009-04-06T14:48:41+09:00</dc:date>
        <description>
      <![CDATA[== Wicket・Maven2・Eclipse・maven-eclipse-pluginを組み合わせていると、main/src/java以下のhtmlファイルがclasses以下にコピーされずに動かない

mvn eclipse:eclipseでEclipse用設定を生成すると、ビルドパスの設定が更新されます。このときにソースのコンパイル対象として&#039;&#039;&#039;「**/]]>
    </description>
    <content:encoded>
      <![CDATA[<h2 id="h2-Wicket.E3.83.BBMaven2.E3.83.BBEclipse.E3.83.BBmaven-eclipse-plugin.E3.82.92.E7.B5.84.E3.81.BF.E5.90.88.E3.82.8F.E3.81.9B.E3.81.A6.E3.81.84.E3.82.8B.E3.81.A8.E3.80.81main.2Fsrc.2Fjava.E4.BB.A5.E4.B8.8B.E3.81.AEhtml.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.8Cclasses.E4.BB.A5.E4.B8.8B.E3.81.AB.E3.82.B3.E3.83.94.E3.83.BC.E3.81.95.E3.82.8C.E3.81.9A.E3.81.AB.E5.8B.95.E3.81.8B.E3.81.AA.E3.81.84">Wicket・Maven2・Eclipse・maven-eclipse-pluginを組み合わせていると、main/src/java以下のhtmlファイルがclasses以下にコピーされずに動かない</h2><p>mvn eclipse:eclipseでEclipse用設定を生成すると、ビルドパスの設定が更新されます。このときにソースのコンパイル対象として<strong>「**/*.java」</strong>が指定されるのが理由です。*.javaのみがEclipseのコンパイル対象となるために、main/src/java以下のhtmlがclasses以下にコピーされません。
</p><p>プロジェクトのPropertiesを開き「Java Build Path」を選択し、「Source」タブの「project名/src/main/java」と「project名/src/test/java」を確認してください。「Included: (All)」となっていれば問題ありませんが<strong>「Included: **/*.java」</strong>となっているとhtmlがコピーされません。
</p><p>「included: **/*.java」と表示されているところを選択して「remove」ボタンを押すと、すべてのファイルがEclipseの処理対象となり、コピーされます。</p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/wicket-ja/wiki/Bookmarkable%E3%81%AA%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%AE%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%81%AB%E3%80%8C%2F%E3%80%8D%E3%81%A8%E3%81%8B%E3%81%8C%E5%85%A5%E3%82%8B%E5%A0%B4%E5%90%88">
    <title>Bookmarkableなリンクのパラメータに「/」とかが入る場合</title>
    <link>http://sourceforge.jp/projects/wicket-ja/wiki/Bookmarkable%E3%81%AA%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%AE%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%81%AB%E3%80%8C%2F%E3%80%8D%E3%81%A8%E3%81%8B%E3%81%8C%E5%85%A5%E3%82%8B%E5%A0%B4%E5%90%88</link>
    <dc:identifier>Bookmarkableなリンクのパラメータに「/」とかが入る場合</dc:identifier>
    <dc:date>2009-03-19T17:04:30+09:00</dc:date>
        <description>
      <![CDATA[Bookmarkableなリンクのパラメータに「/」が入る場合下記のようにするとリンクをクリックした時点で404が発生します。
{{{ code java
public class ParameterTestPageFrom extends WebPage {
    public ParameterTestPageFrom(){
        PageParameters param ]]>
    </description>
    <content:encoded>
      <![CDATA[<p>Bookmarkableなリンクのパラメータに「/」が入る場合下記のようにするとリンクをクリックした時点で404が発生します。
<pre>
<B><FONT COLOR="#A020F0">public</FONT></B> <B><FONT COLOR="#A020F0">class</FONT></B> ParameterTestPageFrom <B><FONT COLOR="#A020F0">extends</FONT></B> WebPage {
    <B><FONT COLOR="#A020F0">public</FONT></B> ParameterTestPageFrom(){
        PageParameters param = <B><FONT COLOR="#A020F0">new</FONT></B> PageParameters();
        param.add(<B><FONT COLOR="#BC8F8F">&quot;url&quot;</FONT></B>,<B><FONT COLOR="#BC8F8F">&quot;http://example.jp/&quot;</FONT></B>);
        add(<B><FONT COLOR="#A020F0">new</FONT></B> BookmarkablePageLink(<B><FONT COLOR="#BC8F8F">&quot;next&quot;</FONT></B>,ParameterTestPageTo.<B><FONT COLOR="#A020F0">class</FONT></B>, param));
    }
}
</pre>この場合URLEncoderを使用してエンコーディングを行い、パラメータを受け取るクラス側(今回だとParameterTestPageToクラス)にてパラメータを取得する際にデコーディングを行うことで問題を回避できます。
<pre>
<B><FONT COLOR="#A020F0">public</FONT></B> <B><FONT COLOR="#A020F0">class</FONT></B> ParameterTestPageFrom <B><FONT COLOR="#A020F0">extends</FONT></B> WebPage {
    <B><FONT COLOR="#A020F0">public</FONT></B> ParameterTestPageFrom() <B><FONT COLOR="#A020F0">throws</FONT></B> UnsupportedEncodingException{
        <B><FONT COLOR="#A020F0">final</FONT></B> PageParameters param = <B><FONT COLOR="#A020F0">new</FONT></B> PageParameters();
        param.add(<B><FONT COLOR="#BC8F8F">&quot;url&quot;</FONT></B>, URLEncoder.encode(<B><FONT COLOR="#BC8F8F">&quot;http://example.jp/&quot;</FONT></B>, <B><FONT COLOR="#BC8F8F">&quot;UTF-8&quot;</FONT></B>));
        add(<B><FONT COLOR="#A020F0">new</FONT></B> BookmarkablePageLink(<B><FONT COLOR="#BC8F8F">&quot;next&quot;</FONT></B>,ParameterTestPageTo.<B><FONT COLOR="#A020F0">class</FONT></B>, param));
    }
}
</pre><pre>
<B><FONT COLOR="#A020F0">public</FONT></B> <B><FONT COLOR="#A020F0">class</FONT></B> ParameterTestPageTo <B><FONT COLOR="#A020F0">extends</FONT></B> WebPage {
    <B><FONT COLOR="#A020F0">public</FONT></B> ParameterTestPageTo(PageParameters params) <B><FONT COLOR="#A020F0">throws</FONT></B> UnsupportedEncodingException{
        <I><FONT COLOR="#B22222">//ここでデコーディングするのを忘れずに！
</FONT></I>        add(<B><FONT COLOR="#A020F0">new</FONT></B> Label(<B><FONT COLOR="#BC8F8F">&quot;url&quot;</FONT></B>, URLDecoder.decode(params.getString(<B><FONT COLOR="#BC8F8F">&quot;url&quot;</FONT></B>), <B><FONT COLOR="#BC8F8F">&quot;UTF-8&quot;</FONT></B>)));
    }
}
</pre></p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/wicket-ja/wiki/Ajax%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%81%AE%E8%A1%A8%E7%A4%BA%E9%9D%9E%E8%A1%A8%E7%A4%BA%E3%82%92%E5%88%B6%E5%BE%A1%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88">
    <title>Ajaxを使用してコンポーネントの表示非表示を制御する場合</title>
    <link>http://sourceforge.jp/projects/wicket-ja/wiki/Ajax%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%81%AE%E8%A1%A8%E7%A4%BA%E9%9D%9E%E8%A1%A8%E7%A4%BA%E3%82%92%E5%88%B6%E5%BE%A1%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88</link>
    <dc:identifier>Ajaxを使用してコンポーネントの表示非表示を制御する場合</dc:identifier>
    <dc:date>2009-03-19T15:52:13+09:00</dc:date>
        <description>
      <![CDATA[Ajaxを使用してコンポーネントの表示非表示を制御する場合は注意が必要です。

例えば下記のようなコードを書いたとします。
このコードはテキストフィールドに入力されたデータをAjaxを使用して表示しようとしています。
{{{ code java
public class ReRenderingPage extends WebPage {
    private boolean visi]]>
    </description>
    <content:encoded>
      <![CDATA[<p>Ajaxを使用してコンポーネントの表示非表示を制御する場合は注意が必要です。
</p><p>例えば下記のようなコードを書いたとします。
このコードはテキストフィールドに入力されたデータをAjaxを使用して表示しようとしています。
<pre>
<B><FONT COLOR="#A020F0">public</FONT></B> <B><FONT COLOR="#A020F0">class</FONT></B> ReRenderingPage <B><FONT COLOR="#A020F0">extends</FONT></B> WebPage {
    <B><FONT COLOR="#A020F0">private</FONT></B> <B><FONT COLOR="#A020F0">boolean</FONT></B> visible;
    <B><FONT COLOR="#A020F0">public</FONT></B> ReRenderingPage() {
        Form form = <B><FONT COLOR="#A020F0">new</FONT></B> Form(<B><FONT COLOR="#BC8F8F">&quot;form&quot;</FONT></B>);
        add(form);
        <B><FONT COLOR="#A020F0">final</FONT></B> TextField text = <B><FONT COLOR="#A020F0">new</FONT></B> TextField(<B><FONT COLOR="#BC8F8F">&quot;text&quot;</FONT></B>, <B><FONT COLOR="#A020F0">new</FONT></B> Model(<B><FONT COLOR="#BC8F8F">&quot;&quot;</FONT></B>));
        form.add(text);

        <B><FONT COLOR="#A020F0">final</FONT></B> Label label = <B><FONT COLOR="#A020F0">new</FONT></B> Label(<B><FONT COLOR="#BC8F8F">&quot;inputData&quot;</FONT></B>, <B><FONT COLOR="#A020F0">new</FONT></B> Model(<B><FONT COLOR="#BC8F8F">&quot;&quot;</FONT></B>));
        add(label);
        label.setOutputMarkupId(<B><FONT COLOR="#A020F0">true</FONT></B>);

        form.add(<B><FONT COLOR="#A020F0">new</FONT></B> AjaxButton(<B><FONT COLOR="#BC8F8F">&quot;submit&quot;</FONT></B>, form) {
            @Override
            <B><FONT COLOR="#A020F0">protected</FONT></B> <B><FONT COLOR="#A020F0">void</FONT></B> onSubmit(AjaxRequestTarget target, Form form) {
                visible = visible?<B><FONT COLOR="#A020F0">false</FONT></B>:<B><FONT COLOR="#A020F0">true</FONT></B>;
                label.setModelObject(text.getModelObject());
                label.setVisible(visible);
                target.addComponent(label);
            }
        });
    }
}
</pre><pre>
<B><FONT COLOR="#A020F0">&lt;html xmlns:wicket&gt;</FONT></B>
    <B><FONT COLOR="#A020F0">&lt;head&gt;</FONT></B>
        <B><FONT COLOR="#A020F0">&lt;title&gt;</FONT></B>ReRendering<B><FONT COLOR="#A020F0">&lt;/title&gt;</FONT></B>
    <B><FONT COLOR="#A020F0">&lt;/head&gt;</FONT></B>
    <B><FONT COLOR="#A020F0">&lt;body&gt;</FONT></B>
        <B><FONT COLOR="#A020F0">&lt;span wicket:id=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;inputData&quot;</FONT></B><B><FONT COLOR="#A020F0">&gt;</FONT></B><B><FONT COLOR="#A020F0">&lt;/span&gt;</FONT></B>
        <B><FONT COLOR="#A020F0">&lt;form wicket:id=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;form&quot;</FONT></B><B><FONT COLOR="#A020F0">&gt;</FONT></B>
            <B><FONT COLOR="#A020F0">&lt;input type=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;text&quot;</FONT></B><B><FONT COLOR="#A020F0"> wicket:id=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;text&quot;</FONT></B><B><FONT COLOR="#A020F0">/&gt;</FONT></B>
            <B><FONT COLOR="#A020F0">&lt;input type=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;submit&quot;</FONT></B><B><FONT COLOR="#A020F0"> wicket:id=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;submit&quot;</FONT></B><B><FONT COLOR="#A020F0"> /&gt;</FONT></B>
        <B><FONT COLOR="#A020F0">&lt;/form&gt;</FONT></B>
    <B><FONT COLOR="#A020F0">&lt;/body&gt;</FONT></B>
<B><FONT COLOR="#A020F0">&lt;/html&gt;</FONT></B>
</pre>上記は一見問題無く動作するように見えます。実際に1度だけであればテキストフィールドに入力されたデータを表示、非表示はされますがそれ以降は表示がされなくなります。これは1度非表示になった場合はinputDataのタグが消えてしまい、サーバー側で表示用のDOMデータをレスポンスで返しても何処に対してデータを差し込めばよいか判断できなくなるためです。Wicket Ajax Debug Windowにも
<pre>ERROR: Component with id [[inputData1]] a was not found while trying to perform markup update.
</pre>とエラー情報が出ます。
</p><p>このような場合setOutputMarkupPlaceholderTagを使用することで表示、非表示の制御を行うことが出来ます。
<pre>
        <B><FONT COLOR="#A020F0">final</FONT></B> Label label = <B><FONT COLOR="#A020F0">new</FONT></B> Label(<B><FONT COLOR="#BC8F8F">&quot;inputData&quot;</FONT></B>, <B><FONT COLOR="#A020F0">new</FONT></B> Model(<B><FONT COLOR="#BC8F8F">&quot;&quot;</FONT></B>));
        label.setOutputMarkupId(<B><FONT COLOR="#A020F0">true</FONT></B>);
        label.setOutputMarkupPlaceholderTag(<B><FONT COLOR="#A020F0">true</FONT></B>); <I><FONT COLOR="#B22222">//ここ重要！テストに出ます！
</FONT></I></pre>setOutputMarkupPlaceholderTagを使用することでCSSによる表示、非表示の制御が行われます。上記の場合だと非表示の場合でもHTML上では下記のようになります。
<pre>
<B><FONT COLOR="#A020F0">&lt;span style=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;display: none;&quot;</FONT></B><B><FONT COLOR="#A020F0"> id=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;inputData1&quot;</FONT></B><B><FONT COLOR="#A020F0">/&gt;</FONT></B>
</pre></p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/wicket-ja/wiki/AjaxLazyLoadPanel%E3%82%84IndicatingAjaxButton%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%AB%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E7%94%BB%E5%83%8F%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF">
    <title>AjaxLazyLoadPanelやIndicatingAjaxButtonを使用した場合に表示される画像を変更するには</title>
    <link>http://sourceforge.jp/projects/wicket-ja/wiki/AjaxLazyLoadPanel%E3%82%84IndicatingAjaxButton%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%AB%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E7%94%BB%E5%83%8F%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF</link>
    <dc:identifier>AjaxLazyLoadPanelやIndicatingAjaxButtonを使用した場合に表示される画像を変更するには</dc:identifier>
    <dc:date>2009-03-19T14:05:12+09:00</dc:date>
        <description>
      <![CDATA[== !IndicatingAjaxButtonで表示される画像を変更する場合
wicket-extentionsのバージョンは1.3.5

　!IndicatingAjaxButtonにおいて画像の表示を行うビヘイビアは!WicketAjaxIndicatorAppenderですが!IndicatingAjaxButtonクラス内では下記のように使用されています。
{{{ code ja]]>
    </description>
    <content:encoded>
      <![CDATA[<h2 id="h2-.21IndicatingAjaxButton.E3.81.A7.E8.A1.A8.E7.A4.BA.E3.81.95.E3.82.8C.E3.82.8B.E7.94.BB.E5.83.8F.E3.82.92.E5.A4.89.E6.9B.B4.E3.81.99.E3.82.8B.E5.A0.B4.E5.90.88">IndicatingAjaxButtonで表示される画像を変更する場合</h2><p>wicket-extentionsのバージョンは1.3.5
</p><p>　IndicatingAjaxButtonにおいて画像の表示を行うビヘイビアはWicketAjaxIndicatorAppenderですがIndicatingAjaxButtonクラス内では下記のように使用されています。
<pre>
<B><FONT COLOR="#A020F0">public</FONT></B> <B><FONT COLOR="#A020F0">abstract</FONT></B> <B><FONT COLOR="#A020F0">class</FONT></B> IndicatingAjaxButton <B><FONT COLOR="#A020F0">extends</FONT></B> AjaxButton <B><FONT COLOR="#A020F0">implements</FONT></B> IAjaxIndicatorAware{

	<B><FONT COLOR="#A020F0">private</FONT></B> <B><FONT COLOR="#A020F0">static</FONT></B> <B><FONT COLOR="#A020F0">final</FONT></B> <B><FONT COLOR="#A020F0">long</FONT></B> serialVersionUID = 1L;
        <I><FONT COLOR="#B22222">//直接Newされている。
</FONT></I>	<B><FONT COLOR="#A020F0">private</FONT></B> <B><FONT COLOR="#A020F0">final</FONT></B> WicketAjaxIndicatorAppender indicatorAppender = 
                                             <B><FONT COLOR="#A020F0">new</FONT></B> WicketAjaxIndicatorAppender();

	<B><FONT COLOR="#A020F0">public</FONT></B> IndicatingAjaxButton(String id, Form form){
		<B><FONT COLOR="#A020F0">super</FONT></B>(id, form);
		add(indicatorAppender);
	}

	<B><FONT COLOR="#A020F0">protected</FONT></B> <B><FONT COLOR="#A020F0">abstract</FONT></B> <B><FONT COLOR="#A020F0">void</FONT></B> onSubmit(AjaxRequestTarget target, Form form);

	<B><FONT COLOR="#A020F0">public</FONT></B> String getAjaxIndicatorMarkupId(){
		<B><FONT COLOR="#A020F0">return</FONT></B> indicatorAppender.getMarkupId();
	}
}
</pre>ですのでIndicatingAjaxButtonをサブクラス化して独自の画像を表示させるクラスを作成したり、コンストラクタに何か渡すことで変更可能というわけではありません。
</p><p>ですので、この場合はorg.apache.wicket.ajax.markup.html.form.AjaxButtonとorg.apache.wicket.ajax.!IAjaxIndicatorAwareを実装した独自のIndicatingAjaxButtonクラスを作成しなければいけません。また、実際に画像のURLが生成される箇所はWicketAjaxIndicatorAppender#getIndicatorUrlであるためこのメソッドをオーバーライドしたサブクラスも必要となります。
<pre>
<B><FONT COLOR="#A020F0">public</FONT></B> <B><FONT COLOR="#A020F0">final</FONT></B> <B><FONT COLOR="#A020F0">class</FONT></B> LazyLoadingPage <B><FONT COLOR="#A020F0">extends</FONT></B> WebPage {
    <B><FONT COLOR="#A020F0">public</FONT></B> LazyLoadingPage() {
        Form form = <B><FONT COLOR="#A020F0">new</FONT></B> Form(<B><FONT COLOR="#BC8F8F">&quot;form&quot;</FONT></B>);
        AjaxButton indicating = <B><FONT COLOR="#A020F0">new</FONT></B> MyIndicatingAjaxButton(<B><FONT COLOR="#BC8F8F">&quot;submit&quot;</FONT></B>, form) {
            @Override
            <B><FONT COLOR="#A020F0">protected</FONT></B> <B><FONT COLOR="#A020F0">void</FONT></B> onSubmit(AjaxRequestTarget target, Form form) {
                <B><FONT COLOR="#A020F0">try</FONT></B> {
                    <I><FONT COLOR="#B22222">//画像がちゃんと表示されるかどうか確認のため2秒間スリープする。
</FONT></I>                    Thread.sleep(2000); 
                } <B><FONT COLOR="#A020F0">catch</FONT></B> (InterruptedException e) {
                    <B><FONT COLOR="#A020F0">throw</FONT></B> <B><FONT COLOR="#A020F0">new</FONT></B> RuntimeException(e);
                }
            }
        };
        add(form.add(indicating));
    }

    <I><FONT COLOR="#B22222">/**
     * 独自のIndicatingAjaxButton
     */</FONT></I>
    <B><FONT COLOR="#A020F0">private</FONT></B> <B><FONT COLOR="#A020F0">abstract</FONT></B> <B><FONT COLOR="#A020F0">class</FONT></B> MyIndicatingAjaxButton <B><FONT COLOR="#A020F0">extends</FONT></B> 
                                    AjaxButton <B><FONT COLOR="#A020F0">implements</FONT></B> IAjaxIndicatorAware{

        <B><FONT COLOR="#A020F0">private</FONT></B> WicketAjaxIndicatorAppender appender;

        <B><FONT COLOR="#A020F0">public</FONT></B> MyIndicatingAjaxButton(String id, Form form) {
            <B><FONT COLOR="#A020F0">super</FONT></B>(id, form);
            add(appender = getWicketAjaxIndicatorAppender());
        }

        <B><FONT COLOR="#A020F0">public</FONT></B> WicketAjaxIndicatorAppender getWicketAjaxIndicatorAppender(){
            <B><FONT COLOR="#A020F0">return</FONT></B> <B><FONT COLOR="#A020F0">new</FONT></B> MyAjaxIndicatorAppender();
        }

        @Override
        <B><FONT COLOR="#A020F0">public</FONT></B> String getAjaxIndicatorMarkupId() {
            <B><FONT COLOR="#A020F0">return</FONT></B> appender.getMarkupId();
        }
    }

    <I><FONT COLOR="#B22222">/**
     * 画像のパスを決定するビヘイビア
     */</FONT></I>
    <B><FONT COLOR="#A020F0">private</FONT></B> <B><FONT COLOR="#A020F0">class</FONT></B> MyAjaxIndicatorAppender <B><FONT COLOR="#A020F0">extends</FONT></B> WicketAjaxIndicatorAppender{

        <B><FONT COLOR="#A020F0">private</FONT></B> <B><FONT COLOR="#A020F0">static</FONT></B> <B><FONT COLOR="#A020F0">final</FONT></B> String INDICATOR_URL = <B><FONT COLOR="#BC8F8F">&quot;img/lazy.gif&quot;</FONT></B>;

        @Override
        <B><FONT COLOR="#A020F0">protected</FONT></B> CharSequence getIndicatorUrl() {
            <B><FONT COLOR="#A020F0">return</FONT></B> INDICATOR_URL;
        }
    }
}
</pre></p><p>そもそもIndicatingAjaxButtonクラスがMyIndicatingAjaxButton#getWicketAjaxIndicatorAppenderのようなメソッドをが用意していてくれればいいと思うのですがなぜかありません。なぜ？？
</p><h2 id="h2-.21AjaxLazyLoadPanel.E3.81.A7.E8.A1.A8.E7.A4.BA.E3.81.95.E3.82.8C.E3.82.8B.E7.94.BB.E5.83.8F.E3.82.92.E5.A4.89.E6.9B.B4.E3.81.99.E3.82.8B.E5.A0.B4.E5.90.88">AjaxLazyLoadPanelで表示される画像を変更する場合</h2><p>wicket-extentionsのバージョンは1.3.5
</p><p>AjaxLazyLoadPanelにおいて画像のパスを決定するのはgetLoadingComponentメソッドになります。
<pre>
	<B><FONT COLOR="#A020F0">public</FONT></B> Component getLoadingComponent(String markupId){
		<B><FONT COLOR="#A020F0">return</FONT></B> <B><FONT COLOR="#A020F0">new</FONT></B> Label(markupId, <B><FONT COLOR="#BC8F8F">&quot;&lt;img src=\&quot;&quot;</FONT></B> +
			RequestCycle.get().urlFor(AbstractDefaultAjaxBehavior.INDICATOR) + <B><FONT COLOR="#BC8F8F">&quot;\&quot;/&gt;&quot;</FONT></B>).setEscapeModelStrings(<B><FONT COLOR="#A020F0">false</FONT></B>);
	}
</pre>ですので<a href="http://sourceforge.jp/projects/wicket-ja/wiki/AjaxLazyLoadPanel">AjaxLazyLoadPanel</a>の無名クラスもしくはサブクラスにて下記のようにすれば画像の変更が可能です。
<pre>
        @Override
        <B><FONT COLOR="#A020F0">public</FONT></B> Component getLoadingComponent(String markupId) {
            <B><FONT COLOR="#A020F0">return</FONT></B> <B><FONT COLOR="#A020F0">new</FONT></B> Label(markupId, <B><FONT COLOR="#BC8F8F">&quot;&lt;img src=\&quot;img/lazy.gif\&quot;/&gt;&quot;</FONT></B>).setEscapeModelStrings(<B><FONT COLOR="#A020F0">false</FONT></B>);
        }
</pre></p><p>この画像のパスはメソッドを呼び出す事で生成するようにするクラスを1つ作成していればより柔軟なクラスが作成できるかと思います。</p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/wicket-ja/wiki/%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%A7%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%AE%E5%80%A4%E3%82%92%E3%82%B5%E3%83%96%E3%83%9F%E3%83%83%E3%83%88%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF">
    <title>リンクでフォームの値をサブミットするには</title>
    <link>http://sourceforge.jp/projects/wicket-ja/wiki/%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%A7%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%AE%E5%80%A4%E3%82%92%E3%82%B5%E3%83%96%E3%83%9F%E3%83%83%E3%83%88%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF</link>
    <dc:identifier>リンクでフォームの値をサブミットするには</dc:identifier>
    <dc:date>2009-03-19T11:00:04+09:00</dc:date>
        <description>
      <![CDATA[{{{ code html
&lt;input type=&quot;submit&quot; wicket:id=&quot;submit&quot; /&gt;
}}}
上記の処理（FormをSubmitする）をボタンではなく下記のようなリンクを使用して同様の事を実現したい場合
{{{ code html
&lt;a wicket:id=&quot;submit&quot; &gt;]]>
    </description>
    <content:encoded>
      <![CDATA[<pre>
<B><FONT COLOR="#A020F0">&lt;input type=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;submit&quot;</FONT></B><B><FONT COLOR="#A020F0"> wicket:id=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;submit&quot;</FONT></B><B><FONT COLOR="#A020F0"> /&gt;</FONT></B>
</pre><p>上記の処理（FormをSubmitする）をボタンではなく下記のようなリンクを使用して同様の事を実現したい場合
<pre>
<B><FONT COLOR="#A020F0">&lt;a wicket:id=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;submit&quot;</FONT></B><B><FONT COLOR="#A020F0"> &gt;</FONT></B>Submit<B><FONT COLOR="#A020F0">&lt;/a&gt;</FONT></B>
</pre></p><p>この場合はorg.apache.wicket.markup.html.form.SubmitLinkを使用すると実現可能。
<pre>
<B><FONT COLOR="#A020F0">public</FONT></B> <B><FONT COLOR="#A020F0">class</FONT></B> SubmitLinkPage <B><FONT COLOR="#A020F0">extends</FONT></B> WebPage {
    <B><FONT COLOR="#A020F0">private</FONT></B> String input;
    <B><FONT COLOR="#A020F0">public</FONT></B> SubmitLinkPage() {
        Form form = <B><FONT COLOR="#A020F0">new</FONT></B> Form(<B><FONT COLOR="#BC8F8F">&quot;form&quot;</FONT></B>);
        add(form);
        form.add(<B><FONT COLOR="#A020F0">new</FONT></B> TextField(<B><FONT COLOR="#BC8F8F">&quot;text&quot;</FONT></B>,<B><FONT COLOR="#A020F0">new</FONT></B> PropertyModel(<B><FONT COLOR="#A020F0">this</FONT></B>, <B><FONT COLOR="#BC8F8F">&quot;input&quot;</FONT></B>)));
        form.add(<B><FONT COLOR="#A020F0">new</FONT></B> Label(<B><FONT COLOR="#BC8F8F">&quot;label&quot;</FONT></B>,<B><FONT COLOR="#A020F0">new</FONT></B> PropertyModel(<B><FONT COLOR="#A020F0">this</FONT></B>, <B><FONT COLOR="#BC8F8F">&quot;input&quot;</FONT></B>)));
        form.add(<B><FONT COLOR="#A020F0">new</FONT></B> SubmitLink(<B><FONT COLOR="#BC8F8F">&quot;submitLink&quot;</FONT></B>));
    }
}
</pre><pre>
<B><FONT COLOR="#A020F0">&lt;html xmlns:wicket&gt;</FONT></B>
    <B><FONT COLOR="#A020F0">&lt;head&gt;</FONT></B><B><FONT COLOR="#A020F0">&lt;/head&gt;</FONT></B>
    <B><FONT COLOR="#A020F0">&lt;body&gt;</FONT></B>
        <B><FONT COLOR="#A020F0">&lt;form wicket:id=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;form&quot;</FONT></B><B><FONT COLOR="#A020F0">&gt;</FONT></B>
            <B><FONT COLOR="#A020F0">&lt;span wicket:id=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;label&quot;</FONT></B><B><FONT COLOR="#A020F0">&gt;</FONT></B><B><FONT COLOR="#A020F0">&lt;/span&gt;</FONT></B>
            <B><FONT COLOR="#A020F0">&lt;input type=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;text&quot;</FONT></B><B><FONT COLOR="#A020F0"> wicket:id=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;text&quot;</FONT></B><B><FONT COLOR="#A020F0">/&gt;</FONT></B>
            <B><FONT COLOR="#A020F0">&lt;a wicket:id=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;submitLink&quot;</FONT></B><B><FONT COLOR="#A020F0">&gt;</FONT></B>Submit Link<B><FONT COLOR="#A020F0">&lt;/a&gt;</FONT></B>
        <B><FONT COLOR="#A020F0">&lt;/form&gt;</FONT></B>
    <B><FONT COLOR="#A020F0">&lt;/body&gt;</FONT></B>
<B><FONT COLOR="#A020F0">&lt;/html&gt;</FONT></B>
</pre></p><p>また、下記のようにリンクがformタグの外側にある場合
<pre>
<B><FONT COLOR="#A020F0">&lt;html xmlns:wicket&gt;</FONT></B>
    <B><FONT COLOR="#A020F0">&lt;head&gt;</FONT></B><B><FONT COLOR="#A020F0">&lt;/head&gt;</FONT></B>
    <B><FONT COLOR="#A020F0">&lt;body&gt;</FONT></B>
        <B><FONT COLOR="#A020F0">&lt;form wicket:id=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;form&quot;</FONT></B><B><FONT COLOR="#A020F0">&gt;</FONT></B>
            <B><FONT COLOR="#A020F0">&lt;span wicket:id=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;label&quot;</FONT></B><B><FONT COLOR="#A020F0">&gt;</FONT></B><B><FONT COLOR="#A020F0">&lt;/span&gt;</FONT></B>
            <B><FONT COLOR="#A020F0">&lt;input type=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;text&quot;</FONT></B><B><FONT COLOR="#A020F0"> wicket:id=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;text&quot;</FONT></B><B><FONT COLOR="#A020F0">/&gt;</FONT></B>
        <B><FONT COLOR="#A020F0">&lt;/form&gt;</FONT></B>
        <B><FONT COLOR="#A020F0">&lt;!-- fromの外側に移動 --&gt;</FONT></B>
        <B><FONT COLOR="#A020F0">&lt;a wicket:id=</FONT></B><B><FONT COLOR="#BC8F8F">&quot;submitLink&quot;</FONT></B><B><FONT COLOR="#A020F0">&gt;</FONT></B>Submit Link<B><FONT COLOR="#A020F0">&lt;/a&gt;</FONT></B>
    <B><FONT COLOR="#A020F0">&lt;/body&gt;</FONT></B>
<B><FONT COLOR="#A020F0">&lt;/html&gt;</FONT></B>
</pre>Java側では<a href="http://sourceforge.jp/projects/wicket-ja/wiki/SubmitLink">SubmitLink</a>のコンストラクタの第2引数にサブミットしたいFormオブジェクトを指定する。
<pre>
<B><FONT COLOR="#A020F0">public</FONT></B> <B><FONT COLOR="#A020F0">class</FONT></B> SubmitLinkPage <B><FONT COLOR="#A020F0">extends</FONT></B> WebPage {
    <B><FONT COLOR="#A020F0">private</FONT></B> String input;
    <B><FONT COLOR="#A020F0">public</FONT></B> SubmitLinkPage() {
        Form form = <B><FONT COLOR="#A020F0">new</FONT></B> Form(<B><FONT COLOR="#BC8F8F">&quot;form&quot;</FONT></B>);
        add(form);
        form.add(<B><FONT COLOR="#A020F0">new</FONT></B> TextField(<B><FONT COLOR="#BC8F8F">&quot;text&quot;</FONT></B>,<B><FONT COLOR="#A020F0">new</FONT></B> PropertyModel(<B><FONT COLOR="#A020F0">this</FONT></B>, <B><FONT COLOR="#BC8F8F">&quot;input&quot;</FONT></B>)));
        form.add(<B><FONT COLOR="#A020F0">new</FONT></B> Label(<B><FONT COLOR="#BC8F8F">&quot;label&quot;</FONT></B>,<B><FONT COLOR="#A020F0">new</FONT></B> PropertyModel(<B><FONT COLOR="#A020F0">this</FONT></B>, <B><FONT COLOR="#BC8F8F">&quot;input&quot;</FONT></B>)));
        <I><FONT COLOR="#B22222">//ここ重要！
</FONT></I>        add(<B><FONT COLOR="#A020F0">new</FONT></B> SubmitLink(<B><FONT COLOR="#BC8F8F">&quot;submitLink&quot;</FONT></B>,form));
    }
}
</pre></p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/wicket-ja/wiki/Wicket%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9FWeb%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AA%E3%81%A9">
    <title>Wicketを使ったWebアプリケーションなど</title>
    <link>http://sourceforge.jp/projects/wicket-ja/wiki/Wicket%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9FWeb%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AA%E3%81%A9</link>
    <dc:identifier>Wicketを使ったWebアプリケーションなど</dc:identifier>
    <dc:date>2009-02-18T16:49:38+09:00</dc:date>
        <description>
      <![CDATA[Wicketを使ったWebアプリケーションなどを追加していってください[[BR]][[BR]]
*[http://othello.dkami.staxapps.net/othello/ オセロ] オセロです。白がプレイヤーで先攻です。[[BR]]]]>
    </description>
    <content:encoded>
      <![CDATA[<p>Wicketを使ったWebアプリケーションなどを追加していってください<br /><br />
*<a href="http://othello.dkami.staxapps.net/othello/" class="external" rel="nofollow">オセロ</a> オセロです。白がプレイヤーで先攻です。<br /></p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/wicket-ja/wiki/%E7%AC%AC%E4%B8%80%E5%9B%9E">
    <title>第一回</title>
    <link>http://sourceforge.jp/projects/wicket-ja/wiki/%E7%AC%AC%E4%B8%80%E5%9B%9E</link>
    <dc:identifier>第一回</dc:identifier>
    <dc:date>2008-08-02T02:47:48+09:00</dc:date>
        <description>
      <![CDATA[== メタフレームワークとしてのWicket ==
発表者: ちめら (たけうち)
 [[LinkAttach(chimera-demo.pdf, caption=スライド)]]
 [[LinkAttach(chimera-demo-src.zip, caption=デモソースファイル)]]
 [[LinkAttach(chimera-demo-bin.war, caption=デモアプリ]]>
    </description>
    <content:encoded>
      <![CDATA[<h2 id="h2-.E3.83.A1.E3.82.BF.E3.83.95.E3.83.AC.E3.83.BC.E3.83.A0.E3.83.AF.E3.83.BC.E3.82.AF.E3.81.A8.E3.81.97.E3.81.A6.E3.81.AEWicket">メタフレームワークとしてのWicket</h2><p>発表者: ちめら (たけうち)
</p><div class="indent"><a href="http://sourceforge.jp/projects/wicket-ja/wiki/%E7%AC%AC%E4%B8%80%E5%9B%9E/attach/chimera-demo.pdf" title="chimera-demo.pdf" alt="chimera-demo.pdf" id="la-chimera-demo.pdf-1" class="link-attach"><img border="0" alt="" src="http://static.sourceforge.jp/wiki/images/icons/mime/24x24/pdf.png">スライド</a>
<a href="http://sourceforge.jp/projects/wicket-ja/wiki/%E7%AC%AC%E4%B8%80%E5%9B%9E/attach/chimera-demo-src.zip" title="chimera-demo-src.zip" alt="chimera-demo-src.zip" id="la-chimera-demo-src.zip-1" class="link-attach"><img border="0" alt="" src="http://static.sourceforge.jp/wiki/images/icons/mime/24x24/zip.png">デモソースファイル</a>
<a href="http://sourceforge.jp/projects/wicket-ja/wiki/%E7%AC%AC%E4%B8%80%E5%9B%9E/attach/chimera-demo-bin.war" title="chimera-demo-bin.war" alt="chimera-demo-bin.war" id="la-chimera-demo-bin.war-1" class="link-attach"><img border="0" alt="" src="http://static.sourceforge.jp/wiki/images/icons/mime/24x24/unknown.png">デモアプリケーションファイル</a>
</div>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/wicket-ja/wiki/%E3%82%88%E3%81%8F%E3%81%82%E3%82%8B%E3%82%A8%E3%83%A9%E3%83%BC">
    <title>よくあるエラー</title>
    <link>http://sourceforge.jp/projects/wicket-ja/wiki/%E3%82%88%E3%81%8F%E3%81%82%E3%82%8B%E3%82%A8%E3%83%A9%E3%83%BC</link>
    <dc:identifier>よくあるエラー</dc:identifier>
    <dc:date>2008-05-07T11:01:45+09:00</dc:date>
        <description>
      <![CDATA[Wicketを使っているときによくあるエラーとして次のようなものがある
{{{
WicketMessage: Unable to find component with id &#039;hello&#039; in [Page class = HelloWorld, id = 0, version = 0]. This means that you declared wicket:id=he]]>
    </description>
    <content:encoded>
      <![CDATA[<p>Wicketを使っているときによくあるエラーとして次のようなものがある
<pre>WicketMessage: Unable to find component with id 'hello' in [Page class = HelloWorld, id = 0, version = 0]. This means that you declared wicket:id=hello in your markup, but that you either did not add the component to your page at all, or that the hierarchy does not match.
[markup = file:/***/***/NetBeansProjects/Test/build/web/WEB-INF/classes/HelloWorld.html
</pre></p><p>これはHTMLのwicket:idに対応するコンポーネントがJavaで追加されていないときに発生する。次のようにコンポーネントを作成したはいいが、追加をしてない場合などである
</p><pre>&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;Hello World!&lt;/title&gt;
    &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;span wicket:id=&quot;hello&quot;&gt;Hello World!&lt;/span&gt;
 &lt;/body&gt;
&lt;/html&gt;
</pre><pre>import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;

public class HelloWorld extends WebPage{
    public HelloWorld(){
        Label label = new Label(&quot;hello&quot;, &quot;Hello World!&quot;);
    }
}
</pre><p>逆にHTMLにwicket:idがないのにコンポーネントを追加した場合は下記のように例外が発生する
<pre>WicketMessage: The component(s) below failed to render. A common problem is that you have added a component in code but forgot to reference it in the markup (thus the component will never be rendered).

1. [Component id = hello, page = HelloWorld, path = 6:hello.Label, isVisible = true, isVersioned = true]

Root cause:

org.apache.wicket.WicketRuntimeException: The component(s) below failed to render. A common problem is that you have added a component in code but forgot to reference it in the markup (thus the component will never be rendered).

1. [Component id = hello, page = HelloWorld, path = 6:hello.Label, isVisible = true, isVersioned = true]

at org.apache.wicket.Page.checkRendering(Page.java:1116)
at org.apache.wicket.Page.renderPage(Page.java:914)
at org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.respond(BookmarkablePageRequestTarget.java:231)
at org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:104)
at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1172)
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1243)
at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1331)
at org.apache.wicket.RequestCycle.request(RequestCycle.java:493)
at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:363)
at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:194)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
</pre></p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/wicket-ja/wiki/Maven2%E3%81%A7QuickStart">
    <title>Maven2でQuickStart</title>
    <link>http://sourceforge.jp/projects/wicket-ja/wiki/Maven2%E3%81%A7QuickStart</link>
    <dc:identifier>Maven2でQuickStart</dc:identifier>
    <dc:date>2008-04-15T11:55:31+09:00</dc:date>
        <description>
      <![CDATA[= Maven 2で!QuickStart! =
[http://maven.apache.org/ Maven 2]を用いて、Wicketプロジェクトを始めるための土台をサクッと作ってしまう方法をご紹介します。
 * !QuickStartの実行
   1. JDK 5.0以降がインストールされているものとします。
   1. Maven 2を[http://maven.apache.o]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-Maven.202.E3.81.A7.21QuickStart.21">Maven 2でQuickStart!</h1><p><a href="http://maven.apache.org/" class="external" rel="nofollow">Maven 2</a>を用いて、Wicketプロジェクトを始めるための土台をサクッと作ってしまう方法をご紹介します。
</p><ul><li>QuickStartの実行
<ol><li>JDK 5.0以降がインストールされているものとします。
</li><li>Maven 2を<a href="http://maven.apache.org/" class="external" rel="nofollow">ここから</a>ダウンロードします。適当なディレクトリ（フォルダ）に展開し、その中のbinディレクトリにPathを通します。
</li><li><a href="http://wicket.apache.org/quickstart.html" class="external" rel="nofollow">Apache WicketのQuickStartのページ</a>に行き、GroupID(プロジェクトの所有団体を識別するためのID=パッケージとして使われる), ArtifactID(プロジェクト名), Version(使用するWicketのバージョン)を入力し、Command Lineのテキストボックスの内容をコピーします。ここでは、GroupID=org.wicket_ja.test, ArtifactID=sample, Version=1.3.3を選んだとします。Command Lineの内容は以下のようになります。
<pre>mvn archetype:create -DarchetypeGroupId=org.apache.wicket -DarchetypeArtifactId=wicket-archetype-quickstart -DarchetypeVersion=1.3.3 -DgroupId=org.wicket_ja.test -DartifactId=sample
</pre><ul><li>GroupIDは、パッケージ名として使われるようになっているので、&quot;wicket-ja&quot;のようにハイフンを含めた指定は避けた方がいいです。
</li></ul></li><li>コマンドプロンプト（ターミナル）上で、プロジェクトを作成したいディレクトリに移動し、先ほどコピーした内容を貼り付けて実行します。
<ul><li>Proxyの設定が必要な場合は、<a href="http://wiki.fdiary.net/maven2/?CookBook#l41" class="external" rel="nofollow">ここ</a>などを参考に設定してください。
</li></ul></li><li>たくさんログが流れますが最後の方に、
<pre>[INFO] BUILD SUCCESSFUL
</pre></li></ol></li></ul><div class="indent">と表示されていれば成功です。
</div><ul><li>生成物の確認
</li></ul><p>以上でWicketプロジェクトの土台が完成しました。ディレクトリ構成を見てみましょう。
<pre>sample
│  pom.xml
│
└─src
    ├─main
    │  ├─java
    │  │  └─org
    │  │      └─wicket_ja
    │  │          └─test
    │  │                  HomePage.html
    │  │                  HomePage.java
    │  │                  WicketApplication.java
    │  │
    │  ├─resources
    │  │      log4j.properties
    │  │
    │  └─webapp
    │      └─WEB-INF
    │              web.xml
    │
    └─test
        └─java
            └─org
                └─wicket_ja
                    └─test
                            Start.java
                            TestHomePage.java
</pre></p><p>また、pom.xmlはこのようになっています（抜粋）。
<pre>&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;
	xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
	xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&quot;&gt;

	&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
	&lt;groupId&gt;org.wicket_ja.test&lt;/groupId&gt;
	&lt;artifactId&gt;sample&lt;/artifactId&gt;
	&lt;packaging&gt;war&lt;/packaging&gt;
	&lt;version&gt;0.1&lt;/version&gt;
	&lt;!-- TODO project name  --&gt;
	&lt;name&gt;quickstart&lt;/name&gt;
	&lt;description&gt;&lt;/description&gt;

（・・中略・・）

	&lt;dependencies&gt;
		&lt;!--  WICKET DEPENDENCIES --&gt;

		&lt;dependency&gt;
			&lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
			&lt;artifactId&gt;wicket&lt;/artifactId&gt;
			&lt;version&gt;${wicket.version}&lt;/version&gt;
		&lt;/dependency&gt;
		&lt;!-- OPTIONAL 
			&lt;dependency&gt;
			&lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
			&lt;artifactId&gt;wicket-extensions&lt;/artifactId&gt;
			&lt;version&gt;${wicket.version}&lt;/version&gt;
			&lt;/dependency&gt;
		--&gt;
（・・後略・・）
</pre></p><p>groupIDやartifactIDなどが、指定したとおりになっていますね。
</p><ul><li>プロジェクトの実行
</li></ul><p>このプロジェクトはもうすでに実行できる状態になっています。実行するにはsampleディレクトリに移動して、
<pre>mvn jetty:run
</pre></p><p>と入力します。<a href="http://localhost:8080/sample" class="external" rel="nofollow">http://localhost:8080/sample</a>にアクセスして、
<pre>Wicket Quickstart Archetype Homepage

If you see this message wicket is properly configured and running
</pre></p><p>と表示されたら成功です。
</p><ul><li>Eclipseで使うには
</li></ul><p>なお、この土台を元にEclipseで開発するには、sampleディレクトリ上で
<pre>mvn eclipse:eclipse -DdownloadSources=true
</pre></p><p>と入力し、Eclipse用の設定ファイルを生成してください。その後、Eclipse上で既存プロジェクトのインポートをすればOKです。なお、クラスパス変数M2_REPOが定義されていないとエラーになるので、Eclipse上で「Window &gt;&gt; Preferences &gt;&gt; Java &gt;&gt; Build Path &gt;&gt; Classpath Variables」から追加してやるか、もしくは
<pre>mvn eclipse:add-maven-repo -Declipse.workspace=#Eclipseのワークスペースのパス#
</pre></p><p>を実行してください。
</p><ul><li>NetBeansで使うには
</li></ul><p>また、この土台を元にNetBeansで開発するには、「ツール &gt;&gt; プラグイン &gt;&gt; 使用可能なプラグイン」から&quot;Maven&quot;を選んでインストールし、「ファイル &gt;&gt; プロジェクトを開く」でsampleディレクトリを指定すればOKです。
</p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/wicket-ja/wiki/Wiki%E7%B7%A8%E9%9B%86%E3%83%86%E3%82%B9%E3%83%88">
    <title>Wiki編集テスト</title>
    <link>http://sourceforge.jp/projects/wicket-ja/wiki/Wiki%E7%B7%A8%E9%9B%86%E3%83%86%E3%82%B9%E3%83%88</link>
    <dc:identifier>Wiki編集テスト</dc:identifier>
    <dc:date>2008-03-20T22:39:32+09:00</dc:date>
        <description>
      <![CDATA[Wiki編集練習などのページ。ヘルプやプレビュー見ても不安ならここに一度書き込んでみるのもいいかも[[BR]] 
&#039;&#039;&#039;太文字&#039;&#039;&#039;[[BR]] 
&#039;&#039;斜体&#039;&#039;
== 見出し ==

Wicketのホームページ[[BR]] 
[http://wicket.apache.org/][[BR]]>
    </description>
    <content:encoded>
      <![CDATA[<p>Wiki編集練習などのページ。ヘルプやプレビュー見ても不安ならここに一度書き込んでみるのもいいかも<br /> 
<strong>太文字</strong><br /> 
<em>斜体</em>
</p><h2 id="h2-.E8.A6.8B.E5.87.BA.E3.81.97">見出し</h2><p>Wicketのホームページ<br /> 
<a href="http://wicket.apache.org/" class="external" rel="nofollow">http://wicket.apache.org/</a><br /> 
</p><p>WicketのExamples<br /> 
<a href="http://www.wicketstuff.org/wicket13/" class="external" rel="nofollow">http://www.wicketstuff.org/wicket13/</a><br /> </p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/wicket-ja/wiki/%E3%82%B5%E3%83%96%E3%83%9F%E3%83%83%E3%83%88%E3%81%97%E3%81%9F%E3%81%82%E3%81%A8%E3%83%A2%E3%83%87%E3%83%AB%E3%81%ABString%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%8F%E3%81%A6%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%9F%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E6%A0%BC%E7%B4%8D%E3%81%97%E3%81%9F%E3%81%84%E3%81%A8%E3%81%8D%E3%81%AF">
    <title>サブミットしたあとモデルにStringではなくて指定したオブジェクトを格納したいときは</title>
    <link>http://sourceforge.jp/projects/wicket-ja/wiki/%E3%82%B5%E3%83%96%E3%83%9F%E3%83%83%E3%83%88%E3%81%97%E3%81%9F%E3%81%82%E3%81%A8%E3%83%A2%E3%83%87%E3%83%AB%E3%81%ABString%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%8F%E3%81%A6%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%9F%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E6%A0%BC%E7%B4%8D%E3%81%97%E3%81%9F%E3%81%84%E3%81%A8%E3%81%8D%E3%81%AF</link>
    <dc:identifier>サブミットしたあとモデルにStringではなくて指定したオブジェクトを格納したいときは</dc:identifier>
    <dc:date>2008-03-09T11:28:17+09:00</dc:date>
        <description>
      <![CDATA[テキストフィールドに入力したり、セレクトリストから選択した後にフォームをサブミットすると、通常は!TextFieldなりのコンポーネントにセットしたModelの内容に、サブミットした文字列が入ります。これがWicketのデフォルトの動作です。HTMLからサブミットする内容は常に文字列なので、Wicketは何もしなければ文字列をモデルに格納します。

しかしセレクトリストのような、選択肢が固定さ]]>
    </description>
    <content:encoded>
      <![CDATA[<p>テキストフィールドに入力したり、セレクトリストから選択した後にフォームをサブミットすると、通常はTextFieldなりのコンポーネントにセットしたModelの内容に、サブミットした文字列が入ります。これがWicketのデフォルトの動作です。HTMLからサブミットする内容は常に文字列なので、Wicketは何もしなければ文字列をモデルに格納します。
</p><p>しかしセレクトリストのような、選択肢が固定されているものをサブミットした場合、Modelに文字列ではなくて選択肢に合致したオブジェクトを格納してもらった方がうれしいことが結構あります。
</p><p>WicketにはこういったときのためにIConverterというインターフェースと、Component#getConverter()というメソッドが用意されています。
</p><p>getConverter()はあってもsetConverter()はありません。コンポーネントのModelに格納するときには、コンポーネント・クラスのgetConverter()メソッドをオーバーライドし、IConveterオブジェクトを返すようにします。IConverterは「文字列を特定のオブジェクトに変換する」「オブジェクトを文字列に変換する」の双方の機能があります。コンポーネントがIConveterを返すようにすることで、あなたはModelのオブジェクトとして独自のクラスを設定することができるようになるわけです。WicketはコンポーネントのgetConveter()メソッドが返すコンバータを使って、Model内のオブジェクトを相互変換します。
</p><p>具体的なコードは下記のようになるでしょう。
</p><pre>
<B><FONT COLOR="#A020F0">new</FONT></B> TextField(<B><FONT COLOR="#BC8F8F">&quot;yourTextFieldId&quot;</FONT></B>) {
	IConverter getConveter(Class type) {
		<I><FONT COLOR="#B22222">//必要ならtype引数を使ってコンバータを切り替える。
</FONT></I>		<I><FONT COLOR="#B22222">//今回はいずれのクラスにも同じコンバータを返す。
</FONT></I>		<B><FONT COLOR="#A020F0">return</FONT></B> <B><FONT COLOR="#A020F0">new</FONT></B> IConverter() {
			Object convertToObject(String value, Locale locale) {
				<I><FONT COLOR="#B22222">//文字列からListModelを生成して返す
</FONT></I>			}

			String convertToString(Object value, Locale locale) {
				<I><FONT COLOR="#B22222">//オブジェクトを文字列に変換する。
</FONT></I>				<B><FONT COLOR="#A020F0">return</FONT></B> String.valueOf(value);
			}
		}
	}
};
</pre><p>この機能を使うためにはもう一つだけ作業が必要です。ほとんどのコンポーネントのコンストラクタには引数としてClass typeを受けるものが用意されています。ここであなたが期待しているモデルオブジェクトのクラスを指定することで、Wicketはそのコンポーネントのモデルからオブジェクトを取り出したり、オブジェクトをセットするときにはコンバータを使う必要があるのだとわかります。この指定をしないかぎり、コンポーネントのモデルオブジェクトはStringであると解釈されます。
</p><p>コンストラクタでクラスを指定する以外にも、コンポーネントのsetType()メソッドを使う方法もあります。
</p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/wicket-ja/wiki/SideBar">
    <title>SideBar</title>
    <link>http://sourceforge.jp/projects/wicket-ja/wiki/SideBar</link>
    <dc:identifier>SideBar</dc:identifier>
    <dc:date>2008-02-23T01:28:08+09:00</dc:date>
        <description>
      <![CDATA[= 最近の更新

[[RecentChanges(max=6)]]

[[ReleaseList]]

= [wiki:sourceforge:WikiGuide Wikiガイド]

  * [wiki:sourceforge:Guide/WikiSyntax Wikiの文法]
  * [wiki:sourceforge:Guide/WikiLinks リンクの種類と文法]
 ]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-.E6.9C.80.E8.BF.91.E3.81.AE.E6.9B.B4.E6.96.B0">最近の更新</h1><h4 id="h4-2010-03-09">2010-03-09</h4><ul><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/ListDataProvider%E3%81%AEmodel%28%29%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%8C%E3%80%81%E5%90%8C%E3%81%98ModelObject%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%E3%81%AF%E5%90%8C%E3%81%98Model%E3%82%92%E8%BF%94%E3%81%99%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF">ListDataProviderのmodel()メソッドが、同じModelObjectに対しては同じModelを返すようにするには</a>
</li><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/FrontPage">FrontPage</a>
</li><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/Form%E3%82%92%E3%82%B5%E3%83%96%E3%83%9F%E3%83%83%E3%83%88%E3%81%97%E3%81%A6%E3%83%90%E3%83%AA%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%A8%E3%80%81%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%82%84%E3%83%A9%E3%82%B8%E3%82%AA%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AA%E3%81%A9%E3%80%81%E5%85%A5%E5%8A%9B%E9%A0%85%E7%9B%AE%E3%81%8C%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%E3%81%95%E3%82%8C%E3%81%A6%E3%81%97%E3%81%BE%E3%81%86">Formをサブミットしてバリデーションエラーになると、チェックボックスやラジオボタンなど、入力項目がリセットされてしまう</a>
</li></ul><h4 id="h4-2009-04-06">2009-04-06</h4><ul><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/Wicket%E3%83%BBMaven2%E3%83%BBEclipse%E3%83%BBmaven-eclipse-plugin%E3%81%AE%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B%E3%81%A7html%E3%81%8Ctarget%2Fclasses%E3%81%AB%E3%82%B3%E3%83%94%E3%83%BC%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84">Wicket・Maven2・Eclipse・maven-eclipse-pluginの組み合わせでhtmlがtarget/classesにコピーされない</a>
</li></ul><h4 id="h4-2009-03-19">2009-03-19</h4><ul><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/Bookmarkable%E3%81%AA%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%AE%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%81%AB%E3%80%8C%2F%E3%80%8D%E3%81%A8%E3%81%8B%E3%81%8C%E5%85%A5%E3%82%8B%E5%A0%B4%E5%90%88">Bookmarkableなリンクのパラメータに「/」とかが入る場合</a>
</li><li><a href="http://sourceforge.jp/projects/wicket-ja/wiki/Ajax%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%81%AE%E8%A1%A8%E7%A4%BA%E9%9D%9E%E8%A1%A8%E7%A4%BA%E3%82%92%E5%88%B6%E5%BE%A1%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88">Ajaxを使用してコンポーネントの表示非表示を制御する場合</a>
</li></ul>
<script src="/projects/wicket-ja/files/compact.js" type="text/javascript" charset="utf-8"></script>
<h1 id="h1-.5Bwiki.3Asourceforge.3AWikiGuide.20Wiki.E3.82.AC.E3.82.A4.E3.83.89.5D"><a href="http://sourceforge.jp/projects/sourceforge/wiki/WikiGuide" class="external-wiki">Wikiガイド</a></h1><ul><li><a href="http://sourceforge.jp/projects/sourceforge/wiki/Guide%2FWikiSyntax" class="external-wiki">Wikiの文法</a>
</li><li><a href="http://sourceforge.jp/projects/sourceforge/wiki/Guide%2FWikiLinks" class="external-wiki">リンクの種類と文法</a>
</li><li><a href="http://sourceforge.jp/projects/sourceforge/wiki/Guide%2FBlockProcessor" class="external-wiki">ブロックプロセッサ</a>
</li><li><a href="http://sourceforge.jp/projects/sourceforge/wiki/Guide%2FPlugins" class="external-wiki">拡張文法</a>
</li><li><a href="http://sourceforge.jp/projects/sourceforge/wiki/Guide%2FSideBar" class="external-wiki">サイドバー</a>
</li><li><a href="http://sourceforge.jp/projects/sourceforge/wiki/Guide%2FAffiliateSetting" class="external-wiki">プロジェクトWikiでの広告設定</a>
</li></ul><h1 id="h1-.E3.82.B5.E3.82.A4.E3.83.89.E3.83.90.E3.83.BC">サイドバー</h1><ul><li><a href="http://sourceforge.jp/projects/sourceforge/wiki/Guide%2FSideBar" class="external-wiki">このサイドバーについて</a>
</li><li><a rel="nofollow" href="/projects/wicket-ja/wiki/SideBar?action=edit">サイドバーの編集</a>
</li></ul><h1 id="h1-"></h1>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/wicket-ja/wiki/Wicket-ja%E3%81%AE%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AE%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%BE%97%E3%82%8B%E3%81%AB%E3%81%AF">
    <title>Wicket-jaのサイトのソースコードを得るには</title>
    <link>http://sourceforge.jp/projects/wicket-ja/wiki/Wicket-ja%E3%81%AE%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AE%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%BE%97%E3%82%8B%E3%81%AB%E3%81%AF</link>
    <dc:identifier>Wicket-jaのサイトのソースコードを得るには</dc:identifier>
    <dc:date>2008-02-19T01:05:21+09:00</dc:date>
        <description>
      <![CDATA[= Wicket-jaのサイトのソースコードを得るには =

[http://www.wicket-ja.org/ http://www.wicket-ja.org/]のサイトは、それ自体がWicketを使って作られております。[[BR]]
それは、Wicket-jaのサイトそのものをサンプルとして提供するという目的のためです。

Wicket-jaのサイトのソースコードは、source]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-Wicket-ja.E3.81.AE.E3.82.B5.E3.82.A4.E3.83.88.E3.81.AE.E3.82.BD.E3.83.BC.E3.82.B9.E3.82.B3.E3.83.BC.E3.83.89.E3.82.92.E5.BE.97.E3.82.8B.E3.81.AB.E3.81.AF">Wicket-jaのサイトのソースコードを得るには</h1><p><a href="http://www.wicket-ja.org/" class="external" rel="nofollow">http://www.wicket-ja.org/</a>のサイトは、それ自体がWicketを使って作られております。<br />
それは、Wicket-jaのサイトそのものをサンプルとして提供するという目的のためです。
</p><p>Wicket-jaのサイトのソースコードは、sourceforge.jpのSubversion上にホスティングされております。<br />
編集（コミット）は登録ユーザのみしかできませんが、取得（チェックアウト）は誰でも出来ます。
</p><p>Subversionをインストールし、コマンドプロンプト/ターミナル上で
<pre>svn co http://svn.sourceforge.jp/svnroot/wicket-ja/trunk/wicket-ja
</pre></p><p>を実行すれば、チェックアウトできます。<br />
ライセンスは、<a href="http://apache.org/licenses/LICENSE-2.0" class="external" rel="nofollow">Apache License, Version 2.0</a>です。
</p><p>是非、チェックアウトし色々いじってみてください。<br />
バグ等を発見した場合や、質問がある場合はお気軽に<a href="http://sourceforge.jp/mail/?group_id=3307">メーリングリスト</a>に質問してください。</p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/wicket-ja/wiki/html%E3%81%8C%E8%A6%8B%E3%81%A4%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E3%82%A8%E3%83%A9%E3%83%BC">
    <title>htmlが見つからないエラー</title>
    <link>http://sourceforge.jp/projects/wicket-ja/wiki/html%E3%81%8C%E8%A6%8B%E3%81%A4%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E3%82%A8%E3%83%A9%E3%83%BC</link>
    <dc:identifier>htmlが見つからないエラー</dc:identifier>
    <dc:date>2008-02-18T15:58:40+09:00</dc:date>
        <description>
      <![CDATA[= Eclipse上でWicketを使っているときに、「htmlが見つからない」エラーが出る =

「htmlが見つからないエラー」とは、
{{{
WicketMessage: Markup of type &#039;html&#039; for component &#039;foo.bar.HomePage&#039; not found.
}}}

というエラーメッセージのこ]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-Eclipse.E4.B8.8A.E3.81.A7Wicket.E3.82.92.E4.BD.BF.E3.81.A3.E3.81.A6.E3.81.84.E3.82.8B.E3.81.A8.E3.81.8D.E3.81.AB.E3.80.81.E3.80.8Chtml.E3.81.8C.E8.A6.8B.E3.81.A4.E3.81.8B.E3.82.89.E3.81.AA.E3.81.84.E3.80.8D.E3.82.A8.E3.83.A9.E3.83.BC.E3.81.8C.E5.87.BA.E3.82.8B">Eclipse上でWicketを使っているときに、「htmlが見つからない」エラーが出る</h1><p>「htmlが見つからないエラー」とは、
<pre>WicketMessage: Markup of type 'html' for component 'foo.bar.HomePage' not found.
</pre></p><p>というエラーメッセージのことを指しています。
</p><p>Eclipseの設定で、拡張子がhtmlのファイルをビルドファイルの出力先にコピーしないという設定になっている場合、上記のエラーメッセージが（ブラウザとコンソールに）表示されます。
</p><p>これを回避するためには、Eclipseの設定で&quot;*.html&quot;を出力先にコピーしないフィルタから外す必要があります。<br />
Eclipseのメニューの「Window &gt;&gt; Preferences &gt;&gt; Java &gt;&gt; Compiler &gt;&gt; Building」を選び、「Output folder」の中にある「Filtered Resources:」から、&quot;*.html&quot;を削除してください。
</p><p>Eclipseを日本語化していたり、Version/OSの違いで若干の差異はありますので、適宜読み替えてください。</p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/wicket-ja/wiki/%E3%82%B9%E3%83%86%E3%83%BC%E3%83%88%E3%83%AC%E3%82%B9%E3%81%AA%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%A8%E3%81%AF">
    <title>ステートレスなページとは</title>
    <link>http://sourceforge.jp/projects/wicket-ja/wiki/%E3%82%B9%E3%83%86%E3%83%BC%E3%83%88%E3%83%AC%E3%82%B9%E3%81%AA%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%A8%E3%81%AF</link>
    <dc:identifier>ステートレスなページとは</dc:identifier>
    <dc:date>2008-02-17T06:09:33+09:00</dc:date>
        <description>
      <![CDATA[= ステートレスなページとは

Wicketはページの状態（ステート）をフレームワークが管理しますが、このステート維持にはセッションが使われています。そのためセッションが切れたあとにページにくるとエラーになったりします。

これはそのページがステートに依存しているからです。Wicketはそのページがステートフル（ステートの維持が必要）なのかステートレス（ステートの維持が必要ない）なのかを判]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-.E3.82.B9.E3.83.86.E3.83.BC.E3.83.88.E3.83.AC.E3.82.B9.E3.81.AA.E3.83.9A.E3.83.BC.E3.82.B8.E3.81.A8.E3.81.AF">ステートレスなページとは</h1><p>Wicketはページの状態（ステート）をフレームワークが管理しますが、このステート維持にはセッションが使われています。そのためセッションが切れたあとにページにくるとエラーになったりします。
</p><p>これはそのページがステートに依存しているからです。Wicketはそのページがステートフル（ステートの維持が必要）なのかステートレス（ステートの維持が必要ない）なのかを判別する必要があります。
</p><p>WicketはComponentクラスの「getStatelessHint()」を使ってこれをチェックします。ページ上のすべてのコンポーネントのgetStatelessHint()メソッドがtrueを返し、なおかつページ自体がブックマーク可能ページであるときに、そのページはステートレスであると考えます。
</p><p>ほとんどのWicketコンポーネントはデフォルトでステートレスです。例外は二つ。LinkとFormはデフォルトでステートフルになっています。コンポーネントとしてLinkやFormを貼付けたページはその段階でステートフルになります。
</p><p>フォームを使うと必ずステート依存になるのではログイン画面などセッションに依存したくないページで困るので、特別に「StatelessLink」と「StatelessForm」というクラスが用意されています。こちらのクラスを使うとステートレスになります。
</p><p>ただしブックマーク可能ページへのリンクを作る際にStatelessLinkを使うのは避けた方が良いでしょう。StatelessLinkは非常に奇妙なURLを生成します。ブックマーク可能なページへのリンクを生成するには「BookmarkablePageLink」クラスを使うとURLもきれいなままでリンクを生成することができます。</p>]]>
    </content:encoded>
      </item>
    </rdf:RDF>

