在twirl文件中出现不可理解的错误(scala+sbt+spray+twirl)



我有一个奇怪的错误,当我试图编译一个喷雾项目,其旋转文件预计将显示2个日期之间的RDV(会议)列表:

> compile
[info] Compiling twirl template .../texte.scala.html to .../texte.template.scala
[info] Compiling 9 Scala sources to /Users/oliviersaint-eve/sms/SPRAY/spray-macaque/target/scala-2.10/classes...
[error] /Users/oliviersaint-eve/sms/SPRAY/spray-macaque/target/scala-2.10/src_managed/main/generated-twirl-sources/html/texte.template.scala:16: ')' expected but '=' found.
[error] Seq[Any](_display_(Seq[Any](/*2.2*/(rdvs:List[Rdv], de:String = "Entrez une date", jusque:String = "Entrez une date"))),format.raw/*2.84*/("""
[error]                                                               ^
[error] /Users/oliviersaint-eve/sms/SPRAY/spray-macaque/target/scala-2.10/src_managed/main/generated-twirl-sources/html/texte.template.scala:120: ')' expected but '}' found.
[error] </html>"""))}
[error]             ^
[error] two errors found
[error] 2 problem(s) in Twirl template(s) found
[error] /Users/oliviersaint-eve/sms/SPRAY/spray-macaque/src/main/twirl/texte.scala.html:2: ')' expected but '=' found.
[error] @(rdvs:List[Rdv], de:String = "Entrez une date", jusque:String = "Entrez une date") 
[error]                             ^
[error] /Users/oliviersaint-eve/sms/SPRAY/spray-macaque/src/main/twirl/texte.scala.html:108: ')' expected but '}' found.
[error] (compile:compile) Compilation failed
[error] Total time: 1 s, completed 17 mars 2014 19:48:06

在twirl编译文件中出现一些错误后,sbt在html文件中给我相应的错误,但我无法理解;

这是twirl文件:

@import metier.Objets.Rdv
@(rdvs:List[Rdv], de:String = "Entrez une date", jusque:String = "Entrez une date")
<!--   -->
<html>
<head>
<!-- DataTables CSS -->
<link rel="stylesheet" type="text/css"
    href="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.4/css/jquery.dataTables.css">
<!-- jQuery 
<script type="text/javascript" charset="utf8"
    src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.2.min.js"></script>-->
<link rel="stylesheet"
    href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.9.1.js"></script>
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css">
<!-- DataTables -->
<script type="text/javascript" charset="utf8"
    src="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.4/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="https://github.com/jquery/jquery-ui/blob/master/ui/i18n/datepicker-fr.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $('#aTable').dataTable();
    });
</script>
<script>
    $(function() {
        $.datepicker.setDefaults($.datepicker.regional[""]);
        $("#from").datepicker({
            dateFormat: 'dd-mm-yy',
            changeMonth : true,
            changeYear : true,
            onClose : function(selectedDate) {
                $("#to").datepicker("option", "minDate", selectedDate);
            }
        });
        $("#from").datepicker($.datepicker.regional["fr"]);
        $("#to").datepicker({
            dateFormat: 'dd-mm-yy',
            changeMonth : true,
            changeYear : true,
            onClose : function(selectedDate) {
                $("#from").datepicker("option", "maxDate", selectedDate);
            }
        });
    });
</script>

</head>
@* This template is a simple html template --- (this text btw. is a
comment and is not rendered) *@
<form class="form-horizontal" id="signinForm" action="" method="post">
        <label>hello</label> <input name="nom" />
        <button data-bind="click: signin">CLICK ME!</button>
        <br /> <label for="from">De</label> <input type="text" id="from"
            name="from"> <label for="De">à</label> <input type="text"
            id="to" name="to">
</form>

<table id="aTable" class="display" width="500px" align="left">
    <thead>
        <tr>
            <th>Nom</th>
            <th>Prénom</th>
            <th>Date examen</th>
            <th>Heure Examen</th>
            <th>Tél.</th>
            <th>Bureau</th>
            <th>Privé</th>
            <th>Site</th>
            <th>Type</th>
            <th>Libellé</th>
            <th>orderID</th>
            <th>Statut</th>
        </tr>
    </thead>
    <tbody>
        @for(rdv <- rdvs){
        <tr>
            <td>@rdv.nom</td>
            <td>@rdv.prénom</td>
            <td>@rdv.dateRDV</td>
            <td>@rdv.heureRDVString</td>
            <td>@rdv.telPortable</td>
            <td>@rdv.telBureau</td>
            <td>@rdv.telPrivé</td>
            <td>@rdv.siteRDV</td>
            <td>@rdv.typeRDV</td>
            <td>@rdv.libelléRDV</td>
            <td>@rdv.orderId</td>
            <td>@rdv.statut</td>
        </tr>
        }
    </tbody>
</table>
</html>
错误只与

开头有关。你能帮我吗?

ps:这是处理前一个twirl文件形式的路由部分:

post {
      formField( 'nom ,'from, 'to) { (name,de,jusque) =>
        println( "button clicked!" )
        respondWithMediaType( `text/html` ) {
          val listOfRdv:List[Rdv]=grab_rdv
          complete( html.texte(listOfRdv ).toString )
        }
      }
    }

感谢

PS:回答评论,这里是新的错误,当我删除默认值:

(

info] Compiling twirl template .../texte.scala.html to .../texte.template.scala
[info] Compiling 9 Scala sources to /Users/oliviersaint-eve/sms/SPRAY/spray-macaque/target/scala-2.10/classes...
[error] /Users/oliviersaint-eve/sms/SPRAY/spray-macaque/src/main/scala/com/example/MyService.scala:43: too many arguments for method apply: ()twirl.api.HtmlFormat.Appendable in object texte
[error]           complete( html.texte( Nil ).toString )
[error]                               ^
[error] /Users/oliviersaint-eve/sms/SPRAY/spray-macaque/src/main/scala/metier/Objets.scala:4: object io is not a member of package reflect
[error] import scala.reflect.io.File
[error]                      ^
[error] /Users/oliviersaint-eve/sms/SPRAY/spray-macaque/src/main/scala/metier/Objets.scala:124: not found: value File
[error]         val fileToSave = File(fileString)
[error]                          ^
[error] /Users/oliviersaint-eve/sms/SPRAY/spray-macaque/src/main/scala/metier/Objets.scala:127: not found: value File
[error]           val ancientFile = File(fileString + ".save")
[error]                             ^
[error] /Users/oliviersaint-eve/sms/SPRAY/spray-macaque/target/scala-2.10/src_managed/main/generated-twirl-sources/html/texte.template.scala:16: not found: value rdvs
[error] Seq[Any](_display_(Seq[Any](/*2.2*/(rdvs:List[Rdv], de:String, jusque:String ))),format.raw/*2.45*/("""
[error]                                     ^
[error] 5 errors found
[error] 1 problem(s) in Twirl template(s) found
[error] /Users/oliviersaint-eve/sms/SPRAY/spray-macaque/src/main/twirl/texte.scala.html:2: not found: value rdvs
[error] @(rdvs:List[Rdv], de:String, jusque:String )
[error]   ^
[error] (compile:compile) Compilation failed
[error] Total time: 9 s, completed 17 mars 2014 20:56:12

再一次,这是不可理解的,在我的路由中,我要么用List[Rdv]类型的参数调用页面,要么用Nil…

似乎不能在模板参数中使用默认值。试着像这样修改第二行:

@(rdvs: List[Rdv], de: String, jusque: String)

您可以传递这些值,而不是保持它们为默认值。

最新更新