문제

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} &mdash; {key.getValue}
                        <a href="#" class="close">&times;</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 &mdash; The item has been created
                  <a href="#" class="close">&times;</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} &mdash; {key.getValue}
                        <a href="#" class="close">&times;</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 &mdash; The item has been created
                  <a href="#" class="close">&times;</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} &mdash; @{key.getValue}
                <a href="#" class="close">&times;</a>
            </div>
        </div>
    </div>
}

그리고 정말로 원한다면 if:

@if(flash.size > 0) {
     (above code)
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top