質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Scala

ScalaはJava仮想マシンで動作を行うオブジェクト指向型プログラミング言語の1つです。静的型付けの関数型言語で、コンパイルエラーの検出に強みがあります。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Play Framework 2

Play Framework 2はPlayのメジャーバージョンです。現代の web アプリケーション開発に必要なコンポーネント及び API を統合した生産性の高い Java と Scala の web アプリケーションフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2065閲覧

【PlayFramework(Java)】Scalaテンプレートでデータを表示させる時の処理のさせ方について

Sfidante

総合スコア90

Scala

ScalaはJava仮想マシンで動作を行うオブジェクト指向型プログラミング言語の1つです。静的型付けの関数型言語で、コンパイルエラーの検出に強みがあります。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Play Framework 2

Play Framework 2はPlayのメジャーバージョンです。現代の web アプリケーション開発に必要なコンポーネント及び API を統合した生産性の高い Java と Scala の web アプリケーションフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/05/01 08:31

タイトルからではどのようなことをおこないたいのか想定出来ないと思いますので、
例を挙げてどのようなことを行いたいのか言いますので、
アドバイスいただけますと幸いです。

データベース(MySQL)からModelを用いて
String型で

data1,data2,data3

というデータを取って来たとします。
(このような形での格納は良くないですが・・・)

そのデータを","区切りでHTML上で以下のように表示させたいです。

HTML

1<a href="data1">data1</a> 2<a href="data2">data2</a> 3<a href="data3">data3</a>

そうしたい場合に処理のさせ方は3通りあると考えております。
①Java側でsplitを用いてListないしは配列に格納して、それをScalaテンプレートでforで回して表示する方法
②Scalaテンプレート側でScalaを用いて上記と同じように","区切りにして表示する方法(Scalaに関しては知見がないので避けたい)
③Scalaテンプレートにデータを渡して、JavaScriptで同じようにsplitを用いてHTMLを生成して表示する方法

抽象的な質問となりますが、どれが一番ベストなのでしょうか?
選択する観点と致しましては、
①HTMLの表示のさせ方はaタグ以外にも色々な形で表示させることを考慮する
②処理として、微量だと思いますが、パフォーマンスが良いもの
③可読性が良いもの
この当たりになると思います。

何卒、ご教授の程宜しく御願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

私は

①Java側でsplitを用いてListないしは配列に格納して、それをScalaテンプレートでforで回して表示する方法

を推奨します。以下、理由を述べます。

Play Frameworkを含むあらゆるMVCにおいて、こうした方が良いという方針があります。

**ロジックをViewに書かない。**

今回の"data1,data2,data3"を分解するというのは文字列を処理するロジックです。ロジックですので、ViewであるScalaテンプレートに書くよりも、ControllerやModel側であるJavaで書いた方が良いでしょう。他にも理由があります。もし、あとでSQLの保存方式を変えた場合はどうでしょうか?もし、Scala側で処理していた場合、全ての処理を書き換えるか、Java側でわざわざ"data1,data2,data3"という文字列を生成してScalaテンプレートに渡さなくてはいけなくなってしまいます。ですが、Java側で分解しているのであれば、その分解する処理を変えるだけで済むでしょう。JavaScriptで処理するにしても、結局はViewの中に処理されていない文字列が入ることになるため、同じ問題がおきます。

なお、Java側と言っても、Modelに書くか、Controllerに書くかですが、私はModelに書くことを勧めます。プロパティとして持たせると言うよりも、public List<String> getDataList()のようなメソッドを実装して、そこにアクセスするという手法です。こうしておけば、文字列のリストがどう保存されていたのかはControllerやViewには関係が無くなり、保守がしやすくなると思います。

投稿2016/05/01 11:49

raccy

総合スコア21733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sfidante

2016/05/01 13:23

ご丁寧なご回答ありがとうございます。 とてもわかりやすく解説いただけたこと感謝致します。 確かに①以外の方法はSQLの保存方法に対処しにくいですね。 また、処理をModelに書く事についてもご教授いただきありがとうございます。 おっしゃっていただいた方針のもと進めていきます。 誠にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問