非法启动简单模式 - 播放框架

illegal start of simple pattern - play framework

我是玩框架的新手。在尝试使用 play 生成 html 模板时,我在 ticket.getTicketIds 行收到错误 illegal start of simple pattern .一直在花一些时间试图解决这个问题,但没有用。

<tbody>
    @for( ticket <- @obj.getPurchasedTickets() ) {
      @for( (key,val) <- @obj.getTicketsCalculation() ) {
       @if( key.equals(ticket.getTicketId())) {
          <tr>
            <td class="desc">@ticket.getTicketName()<br></br>
            @if(ticket.getTicketIds() != null && !ticket.getTicketIds().isEmpty()) {
                @for( ticketid <- ticket.getTicketIds ){
                    #@ticketid 
                }
            }
            </td>
            <td class="unit">@ticket.getPrice()</td>
          </tr>
          }
       }
     }
 </tbody>  

以下POJO用于​​获取必要的值

public class PurchasedTicket {

  private String ticketId; // represents the ticket's id
  private String ticketName;
  private Integer numberOfTickets;
  private Double price;  
  private List<String> ticketIds; // list of tickets bought with this ticket

  // setters and getters

}

 public class Wrapper{

   private Map ticketsCalculation;
   private List<PurchasedTicket> purchasedTickets;

  // setters and getters
}

模板部分表示的obj是Wrapper的一个对象class

将模板第 3 行中的属性名称从 val 更改为 value,因为 val 是保留字。

 (key,value) <- @obj.getTicketsCalculation()

例如见下文

scala> val (key, value) =  "key1" -> "val1"
key: String = key1
value: String = val1

scala> val(键,值)= "key1" -> "val1" 键:字符串 = key1 值:字符串 = val1

scala> val (key, val) =  "key1" -> "val1"
<console>:1: error: illegal start of simple pattern
val (key, val) =  "key1" -> "val1"
          ^

只是让它编译:

  1. 如@rouge-one 所述,您可以使用不同的变量名,例如。值。

  2. 您不应该使用多个 @ 标志。正如 docs 所说,它应该在动态语句的开头使用,例如。 @for( ticket <- obj.getPurchasedTickets() ) {

    所以工作代码应该是这样的:

    <tbody>
        @for(ticket <- obj.getPurchasedTickets()) {
            @for((key, value) <- obj.getTicketsCalculation()) {
                @if(key.equals(ticket.getTicketId())) {
                    <tr>
                        <td class="desc">@ticket.getTicketName()<br></br>
                            @if(ticket.getTicketIds() != null && !ticket.getTicketIds().isEmpty()) {
                                @for(ticketid <- ticket.getTicketIds){
                                    #@ticketid
                                }
                            }
                        </td>
                        <td class="unit">@ticket.getPrice()</td>
                    </tr>
                }
            }
        }
    </tbody>