복붙노트

[SCALA] 와 마찬가지로 play2의 스칼라 템플릿에 변수를 선언

SCALA

와 마찬가지로 play2의 스칼라 템플릿에 변수를 선언

당신은 어떻게 선언과 마찬가지로 play2 스칼라 템플릿에 로컬로 사용되는 변수를 초기화 할 수 있습니까?

내가 이거 가지고있어:

@var title : String = "Home"

템플릿의 맨 위에 선언, 그러나 그것은 나에게 오류를 제공합니다 :

illegal start of simple expression """),_display_(Seq[Any](/*3.2*/var)),format.raw/*3.5*/(""" title : String = "Home"

해결법

  1. ==============================

    1.

    @defining("foo") { title=>
      <div>@title</div>
      ...
    }
    

    기본적으로, 당신은 당신이 그것을 사용하려고하는 블록을 포장해야

  2. ==============================

    2.그것은만큼 당신이 나중에 변수의 값을 변경하려고하지 않는 한되지 않은 사실, @의 c4k의 솔루션은 작동하고 (아주 편리)?

    그것은만큼 당신이 나중에 변수의 값을 변경하려고하지 않는 한되지 않은 사실, @의 c4k의 솔루션은 작동하고 (아주 편리)?

    당신은 단순히 템플릿의 상단에있는이 장소 :

    @yourVariable = {yourValue}
    

    그것은 더 복잡한 표현 인 경우 또는, 당신은이 작업을 수행 :

    @yourVariable = @{yourExpression}
    

    당신은 그런 목록 같은 것들로 작업 할 수 있습니다 :

    @(listFromController: List[MyObject])
    @filteredList = @{listFromController.filter(_.color == "red")}
    
    @for(myObject <- filteredList){ ... }
    

    주어진 예를 들어,이 것

    @title = {Home}  //this should be at beginning of the template, right after passing in parameters
    
    <h1> Using title @title </h1>
    

    코멘트에서 당신은 HTML 형식으로 입력됩니다 있다고 말했다. 다시 @title 덮어 쓰기를 시도하는 경우 그러나, 그것은 단지 관련이없는가요?

  3. ==============================

    3.스칼라 템플릿이 지원, 당신은 템플릿에 변수를 정의 할 수 있습니다

    스칼라 템플릿이 지원, 당신은 템플릿에 변수를 정의 할 수 있습니다

    @import java.math.BigInteger; var i=1; var k=1
    

    당신은 템플릿의 값을 변경하려는 경우

    @{k=2}
    

    @(title:String)(implicit session:play.api.mvc.Session)
    @import java.math.BigInteger; var i=1; var k=1
    ^
    <div id='LContent_div@i'>
                         ^
      <div id='inner_div_@k'></div>
                         ^
    </div>
    
  4. ==============================

    4.당신은 그냥 일반적으로 기본 값으로 뷰의 PARAM을 선언 할 수 있습니다 이러한 경우에 당신은 전체 템플릿이 가능해야합니다 + 당신이에서를 변경 가능성을하겠습니다 virtualeyes '솔루션은 적절한 하나이지만, 다른 가능성도 있습니다 컨트롤러 :

    당신은 그냥 일반적으로 기본 값으로 뷰의 PARAM을 선언 할 수 있습니다 이러한 경우에 당신은 전체 템플릿이 가능해야합니다 + 당신이에서를 변경 가능성을하겠습니다 virtualeyes '솔루션은 적절한 하나이지만, 다른 가능성도 있습니다 컨트롤러 :

    @(title: String = "Home page")
    
    <h1>Welcome on @title</h1>
    

    제어 장치:

    def index = Action{
        Ok(views.html.index("Other title"))
    }
    

    당신이 그 (것)들에게 각 시간을 추가해야하므로 자바 컨트롤러, 템플릿 '기본값을 인식하지 않습니다 :

    public static Result index(){
        return ok(views.html.index.render("Some default value..."));
    }
    
  5. ==============================

    5.당신이 @defining 모든 콘텐츠를 포장하지 않으려면, 당신은이 작업을 수행 할 수 있습니다 :

    당신이 @defining 모든 콘텐츠를 포장하지 않으려면, 당신은이 작업을 수행 할 수 있습니다 :

    @yourVariable = { yourValue }
    

    @defining 지시어는 템플릿에 정말 읽을 수 ...

  6. ==============================

    6.아주 깨끗한 모양과 때때로 선호 될 수있는 하나 확실한 해결책이있다 : 이런 식으로, 당신이 필요로하는 HTML 코드를 생성 범위를 템플릿 주위에 범위를 정의 그것의 내부에 변수를 정의하고 보자

    아주 깨끗한 모양과 때때로 선호 될 수있는 하나 확실한 해결책이있다 : 이런 식으로, 당신이 필요로하는 HTML 코드를 생성 범위를 템플릿 주위에 범위를 정의 그것의 내부에 변수를 정의하고 보자

    @{
      val title = "Home"
    
      <h1>Welcome on {title}</h1>
    }
    

    이것은 몇 가지 단점이 있습니다 :

    생성 된 코드 :

    ...    
    
    Seq[Any](format.raw/*1.1*/("""<!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>Basic Twirl</title>
        </head>
        <body>
    
            """),_display_(/*9.10*/{
                val title = "Home"
    
                    <h1>Welcome on {title}</h1>
            }),format.raw/*15.10*/("""
    
        """),format.raw/*17.5*/("""</body>
    </html>"""))
          }
        }
      }
    
    ...
    
  7. ==============================

    7.돌리기 템플릿에서 나는 때문에 정의 블록을 사용하는 것이 좋습니다

    돌리기 템플릿에서 나는 때문에 정의 블록을 사용하는 것이 좋습니다

    @random = @{
         new Random().nextInt
    }
    
    <div id="@random"></div>
    <div id="@random"></div>
    

    여러 번 사용할 때 서로 다른 값을 초래할 것입니다!

    @defining(new Random().nextInt){ random =>
        <div id="@random"></div>
        <div id="@random"></div>
    }
    
  8. ==============================

    8.

    @isExcel= {@Boolean.valueOf(java.lang.System.getProperty(SettingsProperties.isExcel))}
    
  9. from https://stackoverflow.com/questions/12031146/declare-variable-in-a-play2-scala-template by cc-by-sa and MIT license