40

play 2.0.3 以降はelse ifビューでサポートされているのだろうか? 私はそのようにコーディングしなければならないことを読んだだけです:if {...}else{if{...}else{...}} それは信じられません。

4

7 に答える 7

34

2 番目の if の前に @ を使用しました。

@if (true) {
...
} else { @if (true) {
...
} else {
...
}}
于 2013-08-05T14:04:25.860 に答える
16

私もゲットできました

@{if (true) "foo" else if (true) "bar" else "baz"}

仕事に。ほとんどのプログラミング言語は、字句トークンとして「else if」をサポートしていないことに注意してください。これらは別個のコマンドです。「else」コマンドによって実行されるコードのブロックは、たまたま「if」ステートメントです。

また、XHTML を句と組み合わせることができることにも注意してください。

 @{if (true) <b>foo</b> else if (false) "bar" else "baz"}

通常は状態ロジックをコントローラーにプッシュすることをお勧めします。そうすれば、共有コンポーネントに独自のサブビューを持たせて、状態ごとに異なるビューを持つことができます。

于 2012-12-29T06:10:40.583 に答える
10

いいえ、そうではありません。それはあなただけを許可しますif(condition) {then...} else {otherwise...}

より多くの可能性については、パターン マッチングを使用する必要があります(PHP の に似ていますswitch()) 。

この場合_はデフォルトのオプションです。

Play Autheticate の以前のバージョンのサンプル (現在、コントローラーのリフレクションで同じことが行われています)

@(url: String, token: String, name: String)

@defining(lang().code) { langcode =>

    @langcode match {
        case "de" => {@_password_reset_de(url,token,name)}
        case "pl" => {@_password_reset_pl(url,token,name)}
        case _ => {@_password_reset_en(url,token,name)}
    }

}

したがって、おそらく最良のオプションは、コントローラーの状態を解決し、それをパラメーターとしてビューに渡すことでしょうか?

于 2012-12-28T19:41:09.917 に答える
1

いいえ、「elseif」はscalaテンプレートではサポートされていません:Play Framework 2.0はテンプレートのネストされたifステートメントをサポートしていますか?

パターンマッチングを使用することも、他の場所に配置することもできます。

于 2012-12-29T07:40:26.893 に答える