Scalaの勉強を初めて、軽くはまったのでメモ。

テンプレートのhtmlにCDATAのブロックを定義していたのでが、

各Scalaのソース、テンプレートの記述は参考にしたサンプル

どおりなのにエラーが発生する。

テンプレートの呼び出し直後に。

Message: java.lang.IllegalArgumentException: line 4 does not exist
scala.io.Source.getLine(Source.scala:280)
scala.io.Source.report(Source.scala:368)
scala.io.Source.reportError(Source.scala:355)
scala.io.Source.reportError(Source.scala:344)
scala.xml.parsing.MarkupParser$class.reportSyntaxError(MarkupParser.scala:1113)
net.liftweb.util.PCDataXmlParser.reportSyntaxError(PCDataMarkupParser.scala:91)
scala.xml.parsing.MarkupParser$class.reportSyntaxError(MarkupParser.scala:1117)
net.liftweb.util.PCDataXmlParser.reportSyntaxError(PCDataMarkupParser.scala:91)
scala.xml.parsing.MarkupParser$class.xToken(MarkupParser.scala:266)
net.liftweb.util.PCDataXmlParser.xToken(PCDataMarkupParser.scala:91)
scala.xml.parsing.MarkupParser$class.xToken(MarkupParser.scala:274)
net.liftweb.util.PCDataXmlParser.xToken(PCDataMarkupParser.scala:91)
net.liftweb.util.PCDataMarkupParser$class.xCharData(PCDataMarkupParser.scala:74)
net.liftweb.util.PCDataXmlParser.xCharData(PCDataMarkupParser.scala:91)
scala.xml.parsing.MarkupParser$class.content1(MarkupParser.scala:472)
net.liftweb.util.PCDataXmlParser.content1(PCDataMarkupParser.scala:91)
scala.xml.parsing.MarkupParser$class.content(MarkupParser.scala:505)
net.liftweb.util.PCDataXmlParser.content(PCDataMarkupParser.scala:91)
scala.xml.parsing.MarkupParser$class.element1(MarkupParser.scala:682)
net.liftweb.util.PCDataXmlParser.element1(PCDataMarkupParser.scala:91)
scala.xml.parsing.MarkupParser$class.content1(MarkupParser.scala:481)
net.liftweb.util.PCDataXmlParser.content1(PCDataMarkupParser.scala:91)
scala.xml.parsing.MarkupParser$class.content(MarkupParser.scala:505)
net.liftweb.util.PCDataXmlParser.content(PCDataMarkupParser.scala:91)
scala.xml.parsing.MarkupParser$class.element1(MarkupParser.scala:682)
net.liftweb.util.PCDataXmlParser.element1(PCDataMarkupParser.scala:91)
scala.xml.parsing.MarkupParser$class.content1(MarkupParser.scala:481)
net.liftweb.util.PCDataXmlParser.content1(PCDataMarkupParser.scala:91)
scala.xml.parsing.MarkupParser$class.document(MarkupParser.scala:206)
net.liftweb.util.PCDataXmlParser.document(PCDataMarkupParser.scala:91)
net.liftweb.util.PCDataXmlParser$.apply(PCDataMarkupParser.scala:102)
net.liftweb.http.TemplateFinder$$anonfun$findAnyTemplate$1$$anonfun$apply$64.apply(LiftSession.scala:1096)
net.liftweb.http.TemplateFinder$$anonfun$findAnyTemplate$1$$anonfun$apply$64.apply(LiftSession.scala:1096)
net.liftweb.util.Full.flatMap(Box.scala:332)
net.liftweb.http.TemplateFinder$$anonfun$findAnyTemplate$1.apply(LiftSession.scala:1096)
net.liftweb.http.TemplateFinder$$anonfun$findAnyTemplate$1.apply(LiftSession.scala:1096)
scala.Function1$$anonfun$andThen$1.apply(Function1.scala:48)
scala.Stream.loop$2(Stream.scala:448)
scala.Stream.flatMap(Stream.scala:456)
scala.Stream.flatMap(Stream.scala:218)
net.liftweb.util.ListHelpers$class.first(ListHelpers.scala:50)
net.liftweb.util.Helpers$.first(Helpers.scala:29)
net.liftweb.http.TemplateFinder$.findAnyTemplate(LiftSession.scala:1096)
net.liftweb.http.LiftSession.net$liftweb$http$LiftSession$$findVisibleTemplate(LiftSession.scala:625)
net.liftweb.http.LiftSession$$anonfun$7.apply(LiftSession.scala:461)
net.liftweb.http.LiftSession$$anonfun$7.apply(LiftSession.scala:461)
net.liftweb.util.EmptyBox.or(Box.scala:374)
net.liftweb.http.LiftSession.processRequest(LiftSession.scala:461)
net.liftweb.http.LiftServlet.net$liftweb$http$LiftServlet$$dispatchStatefulRequest(LiftServlet.scala:244)
net.liftweb.http.LiftServlet$$anonfun$2.apply(LiftServlet.scala:176)
net.liftweb.http.LiftServlet$$anonfun$2.apply(LiftServlet.scala:176)
net.liftweb.http.S$.net$liftweb$http$S$$wrapQuery(S.scala:398)
net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_nest2InnerInit$1$$anonfun$apply$16.apply(S.scala:453)
net.liftweb.http.S$.net$liftweb$http$S$$doAround(S.scala:372)
net.liftweb.http.S$$anonfun$net$liftweb$http$S$$doAround$1.apply(S.scala:373)
net.liftweb.mapper.DB$$anon$1.net$liftweb$mapper$DB$$anon$$doWith(DB.scala:117)
net.liftweb.mapper.DB$$anon$1$$anonfun$net$liftweb$mapper$DB$$anon$$doWith$1.apply(DB.scala:118)
net.liftweb.mapper.DB$$anon$1$$anonfun$net$liftweb$mapper$DB$$anon$$doWith$1.apply(DB.scala:118)
net.liftweb.mapper.DB$.use(DB.scala:305)
net.liftweb.mapper.DB$$anon$1.net$liftweb$mapper$DB$$anon$$doWith(DB.scala:118)
net.liftweb.mapper.DB$$anon$1.apply(DB.scala:124)
net.liftweb.http.S$.net$liftweb$http$S$$doAround(S.scala:373)
net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_nest2InnerInit$1.apply(S.scala:451)
net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
net.liftweb.http.S$.net$liftweb$http$S$$_nest2InnerInit(S.scala:450)
net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$19$$anonfun$apply$20$$anonfun$apply$21$$anonfun$apply$22$$anonfun$apply$23$$anonfun$apply$24.apply(S.scala:471)
net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$19$$anonfun$apply$20$$anonfun$apply$21$$anonfun$apply$22$$anonfun$apply$23.apply(S.scala:470)
net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$19$$anonfun$apply$20$$anonfun$apply$21$$anonfun$apply$22.apply(S.scala:469)
net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$19$$anonfun$apply$20$$anonfun$apply$21.apply(S.scala:468)
net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$19$$anonfun$apply$20.apply(S.scala:467)
net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$19.apply(S.scala:466)
net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1.apply(S.scala:465)
net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
net.liftweb.http.S$.net$liftweb$http$S$$_innerInit(S.scala:464)
net.liftweb.http.S$$anonfun$_init$1$$anonfun$apply$27$$anonfun$apply$28$$anonfun$apply$29$$anonfun$apply$30.apply(S.scala:495)
net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
net.liftweb.http.S$$anonfun$_init$1$$anonfun$apply$27$$anonfun$apply$28$$anonfun$apply$29.apply(S.scala:494)
net.liftweb.http.RequestVarHandler$.apply(Vars.scala:191)
net.liftweb.http.S$$anonfun$_init$1$$anonfun$apply$27$$anonfun$apply$28.apply(S.scala:493)
net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
net.liftweb.http.S$$anonfun$_init$1$$anonfun$apply$27.apply(S.scala:492)
net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
net.liftweb.http.S$$anonfun$_init$1.apply(S.scala:491)
net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
net.liftweb.http.S$._init(S.scala:490)
net.liftweb.http.S$.init(S.scala:334)
net.liftweb.http.LiftServlet.doService(LiftServlet.scala:175)
net.liftweb.http.LiftServlet$$anonfun$doIt$1$1.apply(LiftServlet.scala:104)
net.liftweb.http.LiftServlet$$anonfun$doIt$1$1.apply(LiftServlet.scala:104)
net.liftweb.util.TimeHelpers$class.calcTime(TimeHelpers.scala:241)
net.liftweb.util.Helpers$.calcTime(Helpers.scala:29)
net.liftweb.util.TimeHelpers$class.logTime(TimeHelpers.scala:250)
net.liftweb.util.Helpers$.logTime(Helpers.scala:29)
net.liftweb.http.LiftServlet.doIt$1(LiftServlet.scala:103)
net.liftweb.http.LiftServlet.service(LiftServlet.scala:112)
net.liftweb.http.LiftFilterTrait$$anonfun$doFilter$1$$anonfun$apply$22.apply(LiftServlet.scala:525)
net.liftweb.http.LiftFilterTrait$$anonfun$doFilter$1$$anonfun$apply$22.apply(LiftServlet.scala:525)
net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
net.liftweb.http.URLRewriter$.doWith(Req.scala:390)
net.liftweb.http.LiftFilterTrait$$anonfun$doFilter$1.apply(LiftServlet.scala:524)
net.liftweb.http.LiftFilterTrait$$anonfun$doFilter$1.apply(LiftServlet.scala:518)
net.liftweb.http.RequestVarHandler$$anonfun$apply$3$$anonfun$apply$4$$anonfun$apply$5$$anonfun$apply$6.apply(Vars.scala:197)
net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
net.liftweb.http.RequestVarHandler$$anonfun$apply$3$$anonfun$apply$4$$anonfun$apply$5.apply(Vars.scala:196)
net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
net.liftweb.http.RequestVarHandler$$anonfun$apply$3$$anonfun$apply$4.apply(Vars.scala:195)
net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
net.liftweb.http.RequestVarHandler$$anonfun$apply$3.apply(Vars.scala:194)
net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
net.liftweb.http.RequestVarHandler$.apply(Vars.scala:193)
net.liftweb.http.LiftFilterTrait$class.doFilter(LiftServlet.scala:517)
net.liftweb.http.LiftFilter.doFilter(LiftServlet.scala:536)
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
org.mortbay.jetty.Server.handle(Server.java:326)
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

原因は CDATA ブロックの記述でした。

エラーが発生した記述

[CDATA [

正常に動作した記述

[CDATA[

CDATA と[ の間に空白があるとだめのようです。

これは CDATAの仕様なのだろうか?




UC 重力の井戸の底で を観てきました。

ガンダムは、このクオリエティですよね。

1stから見てきている人は懐かしさがいっぱいだったかと。

本編的にはリディがダメダメな感じが。

それからブライトさんの声は結構良かったかと。

JSONを取り扱う為に、JAVAのライブライを追加

org.restlet.ext.json.jar :JsonRepresentationが含まれている

org.json.jar :JSONObjectが含まれている

JSONを取り扱う為に、JAVAのライブライを追加

org.restlet.ext.json.jar :JsonRepresentationが含まれている

org.json.jar :JSONObjectが含まれている

1.Formの値をJSONデータとしてPostできるようにする。

JSPの例

<body>

<form id="form-id" method="post" action="/sampleRest/rest/paramExe2" >

入力<p>

input1:<input type="text" name="input1" id="input1" value="">
</p>
input2:<input type="text" name="input2" id="input2" value="">

<a href="javascript: void(0)" id="sw">switch</a><br />


</form>


</body>

2.Formの情報をJqueryでPostするJavaScriptの関数(#swのリンクがクリックされたら)

<script type="text/javascript">
var form;
var param = {};
var json;

$(function(){
$('#sw').click(
function(){
getFormData();//FormデータをJSONデータにする

$.ajax({
type: 'post',
url: '/sampleRest/rest/paramExe3',//実行するReslretl
data: json,//送信する値(JSON)

success: function(data){
disp(data);//サーバから帰ってきたJSONデータを表示する
}
});
}
);
});

3.実行されるサーバサイドのロジック(Restlet)


@Post("Json")
public Representation handlePost2(Representation rep) throws ResourceException, IOException, JSONException {
StringBuffer sb = new StringBuffer();

JsonRepresentation jsonRep = new JsonRepresentation(rep.getText());


        JSONObject object = jsonRep.getJsonObject();
        if (object != null) {
Iterator<String> ite = object.keys();

while(ite.hasNext()){
String key = ite.next();
String val = object.getString(key);
System.out.println("key:"+ key);
System.out.println("val:"+ val);
}

        }


Representation representation = new JsonRepresentation(jsonRep);//そのまま返却

return representation;
}

3.サーバサイドから帰ってきたJSONデータを表示する。

function disp(data){

alert('001:' + data.input1);

alert('002:' + data.input2);


}

4.Formの値をJSON形式にしてサーバに送る処理

function getFormData(){
form = $('#form-id');

$(form.serializeArray()).each(function(i, v) {
param[v.name] = v.value;
});


json = $.toJSON(param);
alert('json');
alert(json);
}