Wenn Sie meinen, mit Javascript zwei Selects wie Land/Stadt zu "verketten", habe ich den Code für das zweite Select in eine eigene Ansicht verschoben (z. B. Städte/selectCities.html )
#{select 'city', items: cities, valueProperty: 'id', labelProperty: 'name' /}
und verwenden Sie ein Include in der Ansicht, in der ich beide verketteten Selects haben werde
<select name="country" id="select-country">
<option value="ES">Spain</option>
<option value="US">United States</option>
</select>
<span id="select-city">
#{include 'Cities/selectCities.html' /}
</span>
jetzt einige Javascript in der gleichen Ansicht zu reaload zweite Auswahl, wenn erste Auswahl Änderungen
$('#select-country').change(function() {
var selectAction = #{jsAction @reloadCities(':country') /};
$('#select-cities').load(selectAction({country: $(this).val()}));
});
und im Controller haben wir unsere reaload cities-Methode, die nur den zweiten Select wiedergibt
public static void reloadCities(String country) {
List<City> cities = City.find("byCountryCode", country).fetch();
render("@selectCities", cities);
}
und das war's auch schon, bei mir funktioniert es mit Play 1.2.5