編集可能なコンテンツを含むいくつかのセルを含む HTML テーブルをレンダリングするリフト コードがあります。
編集にはeditinplace.jsを使用しています
<script src="/js/jquery.editinplace.js"></script>
editable
テーブルのリフト レンダリングで属性を設定します。
def renderTable(columns: List[(String,List[Model])]) = {
{val entityCountMax = columns.maxBy(_._2.size)
for(i <- 0 until entityCountMax._2.size) yield {
<table style="font-size:80%; float: left; margin-left: 30px; width: auto;" class="table table-striped table-condensed table-hover">
<tr>{ <th> { prettifyClassName(entityCountMax._2(i))} </th> % Attribute(None, "colspan", Text((columns.size+1).toString), Null)}</tr>
{renderHeader(columns.map(_._1))}
{for((key,value) <- entityCountMax._2(i).fields) yield {
<tr>
<th style="text-align: right;">{key}</th>
{for(j <- 0 until columns.size) yield {
<td>{try{
printField(columns(j)._2(i).fields.get(key))
}catch { case e:Exception => ""}
}</td> % Attribute(None, "class", Text({ if(columns(j)._1 contains "DB") "editable" else "" }), Null)
}}
</tr>
}}
</table>
}} ++
<script><![CDATA[
$(document).ready(function(){
$('.editable').editInPlace({ callback: function(unused, enteredText){
$(this).css('color','red'); return enteredText;},
default_text: ''
})});]]>
</script>
}
上記のレンダリング機能をあまり見ないでください。問題なく機能しており、目的のセルを問題なく編集できます。編集されたセルは赤で表示されます。
私が今やりたいことは、編集されたセルの内容を取得し、それを自分の scala アプリケーションに返すことですが、その方法がわかりません。
私がやろうと思っていたのは、自分のモデル用の DIY リフト CRUD を作成することです。問題は、このように (私は推測しています)、すべてのセルを 1 つずつ編集するための HTML ページを作成する必要があることですが、このソリューションはあまり好きではありません。
だからここに本当の質問があります:
html テーブルを scala のデータ構造に直接マップすることは可能ですか? もしそうなら、どうすればいいですか?