sugaさんからサポートをうけて,作ってみました.(sugaさん,親切に教えていただきありがとうございました)
public class DbSouceDescriptor extends ParameterAwareImpl implements WritableSourceDescriptor { public boolean canWrite() { return false; } public OutputStream getOutputStream() { return null; } public boolean exists() { // /default.mayaa, /index.htmlなどのシステムIDを用いて,DBからファイルの内容を引き出す. String systemId = this.getSystemID(); templateBody = // DBからファイルの内容を取得. updateDate = // DBから更新日時を取得. return true; } public InputStream getInputStream() { if (templateBody == null) { return null; } ByteArrayInputStream bais = null; try { bais = new ByteArrayInputStream(templateBody.getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { return null; } return bais; } public Date getTimestamp() { if (this.exists()) { return new Date(updateDate.getTime()); } return new Date(0); } }
クラスを新規に作ったら,resources/META-INF/org.seasar.mayaa.source.PageSourceFactory を書き換えて配置すればOKです.