私は play 2.0 を使用していて、ビューからコントローラー アプリケーションに double を渡そうとしていますが、次のエラーが発生します:タイプ Double の QueryString バインダーが見つかりません。このタイプの暗黙的な QueryStringBindable を実装してみてください。このスレッドを見つけたところ、Java バインダーは play 2.0 の自己再帰型でのみ機能することがわかりましたが、play 2.1 ではサポートされる予定です。残念ながら、私は自分のプロジェクトを 2.1 に移行する立場にないので、リンクされた質問への回答に従おうとしました。プロジェクトに util パッケージを作成しました。その中には DoubleW クラスがあります。
package util;
import java.util.Map;
import play.libs.F;
import play.libs.F.Option;
import play.mvc.QueryStringBindable;
public class DoubleW implements QueryStringBindable<DoubleW> {
public Double value = null;
@Override
public Option<DoubleW> bind(String key, Map<String, String[]> data) {
String[] vs = data.get(key);
if (vs != null && vs.length > 0) {
String v = vs[0];
value = Double.parseDouble(v);
return F.Some(this);
}
return F.None();
}
@Override
public String unbind(String key) {
return key + "=" + value;
}
@Override
public String javascriptUnbind() {
return value.toString();
}
}
これを、コントローラー/アプリケーションで必要な場所と、doubles を使用する必要があるモデル クラスの 1 つにインポートしました。関連するアプリケーション メソッドとモデル メソッドで double データ型を新しい DoubleW に置き換えました。最後に、ルーティング テーブルを変更して、新しいパラメーターが必要になるようにしました。
GET /findMatch controllers.Application.matcher(sLat: util.DoubleW、sLon: util.DoubleW、eLat: util.DoubleW、eLon: util.DoubleW)
アプリケーション マッチャー メソッドが使用するモデル メソッド内で、演算を実行する必要があります。ただし、プロジェクトを実行すると、次のエラーが表示されます:エラー: 二項演算子 '<=' のオペランド型が正しくありません。double を処理するこの新しい型 (DoubleW) は文字列と見なされているようです。その値に対して算術演算を実行できず、標準の Java double にその値を割り当てることができません。前回の投稿で手順を見逃したかどうかはわかりませんが、何をすべきか迷っています。