Cocoonのリクエストロジックシート

 CocoonでWebのフォーム変数を受け取るなどのWebリクエストに対する処理を行うために、 リクエストロジックシートという機構が使えます。 これはCocoonに最初から用意されているXSPロジックシートです。

<?xml version="1.0" encoding="Shift_JIS"?>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=Shift_JIS"></meta>
</head>
<body>
<form action="test.html" method="POST">
名前:<input type="text" name="username"></input>
<input type="submit" value="OK"></input>
</form>
</body>
</html>

 まず、普通のWebフォームを持つHTML文書です。 ACTION=のURLはsitemap.xmapの設定を合わせれば何でもOKです。

 次に最も簡単なXSPを含むXML文書ですが…

<?xml version="1.0" encoding="Shift_JIS" ?>
<xsp:page
  xmlns:xsp="http://apache.org/xsp"
  xmlns:xsp-request="http://apache.org/xsp/request/2.0">

<hello>
  こんにちは、<xsp-request:get-parameter name="username"/>さん。
</hello>
</xsp:page>

実はこれだと、上のように文書のエンコーディングをフォームと合わせていても、 日本語の文字は化けてしまいます。 そこで、xsp:logicタグを使って、

<?xml version="1.0" encoding="Shift_JIS" ?>
<xsp:page
  xmlns:xsp="http://apache.org/xsp"
  xmlns:xsp-request="http://apache.org/xsp/request/2.0">

<hello>
  こんにちは、
  <xsp:logic>
  String a = request.getParameter("username");
  String result = (a == null) ? "***" :
         new String(a.getBytes("8859_1"), "EucJP");
  </xsp:logic>
  <xsp:expr>result</xsp:expr>
さん。
</hello>
</xsp:page>

 このようにしなければいけません。
 実際には、この他に入力がなかった場合のチェックなど、 いろいろ処理コードを追加しなくては実用になりませんね。 そうすると、だんだん…JSP文書みたいになってくるのは気のせいでしょうか… いや、そうに違いない!(← 浅知恵ですぐ決め付ける人)
…というわけで、Webフォーム変数を使って複雑な処理をする場合には、 JSP Generatorを使ったほうがいいのかも、しれません。 ちょっと残念ですが…

Baykit and Cocoon Top

(first uploaded 2003/03/07 last updated 2003/03/07, URANO398)

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル