非法启动简单模式 - 播放框架
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"
^
只是让它编译:
如@rouge-one 所述,您可以使用不同的变量名,例如。值。
您不应该使用多个 @
标志。正如 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>
我是玩框架的新手。在尝试使用 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"
^
只是让它编译:
如@rouge-one 所述,您可以使用不同的变量名,例如。值。
您不应该使用多个
@
标志。正如 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>