Model-Glue.xmlの拡張
Sean Corfieldのブログで、Model-Glue DTD がVer1.0のリリースにあわせて検討されているらしい旨を書かれていたが、Ver1.0RC1では今だリリースされていない。
そんなところに、Wayne Grahamのブログで、modelglue.xmlに、DOCTYPEを定義して拡張する方法が記述されていた。
ポイントは以下のとおり。
1.modelglue.xml内に、DOCTYPEを定義する。
2.外部拡張用フォルダとして、wwwroot内(もしくは、マッピングフォルダ内)にtempletesフォルダを作成する。
3.templetes配下にmodelGlueアプリケーションフォルダ:stockQuateを作成し、三つの拡張xmlファイルを作成する。
1)config.xml
2)controllers.xml
3)event-handlers.xml
4.model.glue.xmlの定義イメージは以下のとおり。
<!DOCTYPE [
<!ENTITY mapping "/modelgluesamples">
<!ENTITY appName "StockQuote">
<!ENTITY folder "stockquate">
<!ENTITY hello "HelloWorld">
<!ENTITY config SYSTEM "http://localhost/modelgluesamples/templates/stockquate/config.xml">
<!ENTITY controllers SYSTEM "http://localhost/modelgluesamples/templates/stockquate/controllers.xml">
<!ENTITY events SYSTEM "http://localhost/modelgluesamples/templates/stockquate/event-handlers.xml">
]>
<modelglue>
&config;
&controllers;
&events;
</modelglue>
5.config.xmlの定義イメージは以下のとおり。
<?xml version="1.0" encoding="UTF-8"?>
<config>
<setting name="defaultEvent" value="&appName;" />
<setting name="applicationMapping" value="&mapping;/&folder;" />
<setting name="beanMappings" value="&mapping;/&folder;/config/beans/" />
<setting name="viewMappings" value="&mapping;/&folder;/views" />
<setting name="reload" value="false" />
<setting name="reloadKey" value="init" />
<setting name="reloadPassword" value="true" />
<setting name="statePrecedence" value="Form" />
<setting name="eventValue" value="event" />
<setting name="modelGlueMapping" value="/ModelGlue" />
<setting name="defaultExceptionHandler" value="Exception" />
<setting name="debug" value="true" />
<setting name="defaultCacheTimeout" value="5" />
</config>
6.controller.xmlの定義イメージは以下のとおり。
<?xml version="1.0" encoding="UTF-8"?>
<controllers>
<controller name="myController" type="&mapping;.&folder;.controller.Controller">
<message-listener message="OnRequestStart" function="OnRequestStart" />
<message-listener message="OnRequestEnd" function="OnRequestEnd" />
<message-listener message="DoHelloWorld" function="GetGreeting" />
<message-listener message="DoStockQuote" function="GetStockQuote" />
</controller>
</controllers>
7.event-handler.xmlの定義イメージは以下のとおり。
<?xml version="1.0" encoding="UTF-8"?>
<event-handlers>
<event-handler name="Home">
<results>
<result do="Layout" />
</results>
</event-handler>
<event-handler name="&hello;">
<broadcasts>
<message name="DoHelloWorld" />
</broadcasts>
<views>
<include name="content" template="dsp.helloworld.cfm">
<value name="greeting" value="I am the default greeting." />
</include>
</views>
<results>
<result do="Layout" />
</results>
</event-handler>
<event-handler name="&appName;">
<broadcasts>
<message name="DoStockQuote">
<argument name="DefaultSymbol" value="MACR" />
</message>
</broadcasts>
<views>
<include name="content" template="form.&folder;.cfm" />
</views>
<results>
<result name="BadSymbol" do="BadStockSymbol" />
<result do="Layout" />
</results>
</event-handler>
<event-handler name="BadStockSymbol" access="private">
<views>
<include name="content" template="dsp.badStocksymbol.cfm" />
</views>
</event-handler>
<event-handler name="Layout" access="private">
<views>
<include name="main" template="layout.main.cfm" />
</views>
</event-handler>
<event-handler name="Exception">
<views>
<include name="body" template="exception.cfm" />
</views>
</event-handler>
</event-handlers>
コメント