outputLinkのmailto

どうも、ポートレット上で 、これが動かないように見えるのだが。もしかして、ServletResponseのencodeURLはmailto:… というのを与えたら、普通にExceptionをはかずに、値を返すということだろうか??がしかし、PlutoのPortletResponseは、IllegalArgumentExceptionをはいて、終了・・・。なんじゃ、こりゃ~。この現象を見ていると、Plutoが悪いような気もする。というわけで、サーブレットとポートレットの仕様を確認。うーん、Plutoだ・・・。で、さらに、TomcatとPlutoのソースコードを見てみる・・・。Plutoよ、それではだめだ。なぜ、encodeURLで

if (path.indexOf("://") == -1 && !path.startsWith("/")) {
throw new IllegalArgumentException(
"only absolute URLs or full path URIs are allowed");
}

ということをするのかな・・・。手っ取り早く修正するには、throwせずに、returnでそのままかえすべきだろう。バグあげておこう・・・。そんで、パッチを当てたPlutoを使わんといかんな。そうしないとアドレス帳ポートレットが動かん。

階層化されたレイアウト

1列レイアウトの次の2列レイアウトの表示は問題ないのだが、2列にした後の1列表示は壊れる。原因は、2列表示でfloat:leftとかしてそのまま1列表示されるため。というわけで、階層化(nested)されたレイアウト後には、br style=”clear:both;”を実行するようにして問題解決

レイアウトポートレットについて

レイアウトポートレットについて

Jetspeed2のレイアウトは、jetspeed-layout ポートレットに管理されています。ここでいうレイアウトは、ページ内でポートレットを1列で表示してみたり、2列で表示してみたり、という感じで、ポートレットの配置に関するレイアウトを指します。ここでは、どのようにそれが定義されているか、新しいレイアウトを追加するにはどうしたらよいかを見ていきます。

設定ファイルについて

レイアウトポートレットは、ソースコード上では、layout-portlets/ 以下に置かれています。J2をビルドすると、jetspeed-layout.warが配備されます(J2 の内部的には、jetspeed-で始まるポートレットアプリケーションは、J2用の特殊なポートレットとして認識されます。ですので、PALMポートレットで確認すると、<local>と出ると思います)。そこに置かれているファイルを見るとわかりますが、レイアウトポートレットも基本的には、普通のポートレットと同様に作られているのがわかると思います。

ソースコードを見ると、LayoutPortlet と MultiColumnPortlet の2つしかないのがわかります。これらがポートレットの配置をコントロールし、その配置は、portlet.xml から渡されるパラメータにより、2列で表示したり、3列で表示したり、しています。ですので、新たな配置方法を利用したい場合は、portlet.xml に追加することになります(斬新なレイアウトを追加したい場合は、MultiColumnPortletと同様な新たなポートレットを追加すれば良いと思います(^^))。

レイアウトの追加

layout-portlets/src/webapp/WEB-INF/portlet.xml を見ると、現在、使える配置方法がわかります。ですので、これらの配置方法を適用したい場合は、使用したいものの portlet-name を psml 内で記述すると適用されます。

いろいろな配置があると思いますが、もし、左側が 75% と右側 25% の2列で表示したい場合は、以下のようなポートレットの定義を portlet.xml に追加すればよいと思います。

<portlet id="VelocityTwoColumns7525">
<portlet-name>VelocityTwoColumns7525</portlet-name>
<display-name>75/25 Two Columns Layout Using Velocity</display-name>
<init-param>
<name>ViewPage</name>
<value>columns</value>
</init-param>
<init-param>
<name>MaxPage</name>
<value>maximized</value>
</init-param>
<init-param>
<name>columns</name>
<value>2</value>
</init-param>
<init-param>
<name>sizes</name>
<value>75%,25%</value>
</init-param>
<init-param>
<name>layoutType</name>
<value>TwoColumns</value>
</init-param>
<portlet-class>org.apache.jetspeed.portlets.layout.MultiColumnPortlet</portlet-class>
<expiration-cache>-1</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
<portlet-mode>edit</portlet-mode>
<portlet-mode>help</portlet-mode>
</supports>
<portlet-info>
<title>VelocityTwoColumns7525NoActions</title>
<short-title>VelocityTwoColumns7525NoActions</short-title>
</portlet-info>
</portlet>

ぜひ、いろいろなレイアウトを試してみてください。