2011年4月23日土曜日

LiftでCamelCaseのsnippetがClass Not Foundとなる件。

Lift 2.3で発生した問題。

AccountSnippet.scalaにて下記のように記載。

class AccountSnippet{
//色々
}


VIEWに以下のように書いて実行。

<lift:AccountSnippet.post form="POST">
    <ul class="status">
      <li> <accnt:name/> </li>
      <li> <accnt:submit/> </li>
    </ul>
  </lift:AccountSnippet.post> 

するとブラウザには以下のようなエラーメッセージが。

Error processing snippet: accountsnippet.post
Reason: Class Not Found
XML causing this error:

<lift:accountsnippet.post form="POST">
    <ul class="status">
      <li> <accnt:name> </accnt:name></li>
      <li> <accnt:submit> </accnt:submit></li>
    </ul>
  </lift:accountsnippet.post>

わけがわからないなーとぐぐってみると、
どうやらHTML5のparserはすべてのXML系のタグをすべて小文字に変換するため、
AccountSnippetとはマッチせず、Class Not Foundになるそうな。

てことで

class Accountsnippet{
//色々
}

と変更したらうまく動きましたとさ。なんとも切ない話・・・。

以下参考リンク。

SnippetFailure message 
※最後のDavid Pollakの発言参照。


※2011/07/05追記:
Html5とXHTMLの差違についてのDPPからの説明。
Html5 and XHTML are different