play2 템플릿에서 해석되지 않는 변수
-
02-01-2020 - |
문제
Play2 템플릿 엔진에 문제가 있습니다.일부 변수는 렌더링 프로세스 중에 해석되지 않습니다.
변수 {key.getKey}는 큰따옴표로 묶인 경우 해석되지 않습니다.이 문제를 어떻게 해결할 수 있나요?
플레이 2.2.3 템플릿(index.scala.html)
@flash
@(if (flash.size > 0) {
flash.entrySet.iterator.map { key =>
<div class="row">
<div class="large-12 columns">
<div class="alert-box radius {key.getKey}" data-alert="">
{key.getKey.toUpperCase} — {key.getValue}
<a href="#" class="close">×</a>
</div>
</div>
</div>
}
})
HTML 출력:
{"success": "The item has been created"}
<div class="row">
<div class="large-12 columns">
<div class="alert-box radius {key.getKey}" data-alert="">
SUCCESS — The item has been created
<a href="#" class="close">×</a>
</div>
</div>
</div>
PLAY 2.2.3 @ 변수가 있는 TEMPLATE(index.scala.html)
@flash
@(if (flash.size > 0) {
flash.entrySet.iterator.map { key =>
<div class="row">
<div class="large-12 columns">
<div class="alert-box radius @{key.getKey}" data-alert="">
{key.getKey.toUpperCase} — {key.getValue}
<a href="#" class="close">×</a>
</div>
</div>
</div>
}
})
HTML 출력:
{"success": "The item has been created"}
<div class="row">
<div class="large-12 columns">
<div class="alert-box radius @{key.getKey}" data-alert="">
SUCCESS — The item has been created
<a href="#" class="close">×</a>
</div>
</div>
</div>
해결책
편집하다: 이전에는 이것이 Scala인지 Java인지 확실하지 않았기 때문에 Play Java에서 작동하도록 답변을 수정했습니다.
템플릿은 Java에서 약간 다르게 작동하는 것으로 보이며, if
성명서가 일을 엉망으로 만들었습니다.당신은 실제로 필요하지 않습니다 if
어쨌든 빈 반복자를 매핑하면 아무 작업도 수행되지 않습니다.이것은 작동합니다:
@flash.entrySet.iterator.map { key =>
<div class="row">
<div class="large-12 columns">
<div class="alert-box radius @{key.getKey}" data-alert="">
@{key.getKey.toUpperCase} — @{key.getValue}
<a href="#" class="close">×</a>
</div>
</div>
</div>
}
그리고 정말로 원한다면 if
:
@if(flash.size > 0) {
(above code)
}
제휴하지 않습니다 StackOverflow