アクションと画面遷移
DBを更新し、画面を移るには?
ウェブアプリケーションでは、フォームからサーバーへデータを渡し、 データベースの更新などの処理を行ってから、次の画面に移るという処理の繰り返しが多くなります。
サーブレットを使ってこの処理をひたすら書くのも1つの方法ですが、 CLSのプログラミング言語としての側面を利用することで、モジュール化が容易になります。
cls-action要素をHTML中に記述すると、その要素内でスクリプティングが可能になります。 Pastaでは画面出力を行わない、スクリプティングのためだけのページを用意して、DB更新などの「アクション」を記述できます。
記述方法
HTMLとして記述することも可能ですが、プログラマが書くものなので、XMLを使いましょう。 アクションは大抵の場合次のようなXMLファイルとして記述します。
<?xml version="1.0" encoding="Shift_JIS"?>
<actions xmlns:cls="http://port4.info/2002/CLS">
<cls:action>
$messages;
@-user-reply;
[not-present: messages.invalid; @redirect: "next.html";]
[present: messages.invalid; @forward: "error.html";]
</cls:action>
</actions>
上の例ではルート要素はactionsとなっていますが、実際のところ、何でも構いません。 意味を持つのはCLSの名前空間宣言と、cls:action要素です。
@-user-reply;はユーザーが定義したActionコンポーネントです。 先にmessages Moduleを起動していますが、このModuleは@-user-reply;が出力した エラーにmessages.で始まる名前のパイプからアクセスできるようにするものです。 messages.invalid(バリデーションエラー)というエラーが発生していなければnext.htmlにリダイレクトし、 エラーが発生していればerror.htmlに転送します。

