2011-02-02 6 views
0

をタイトルとするhtml選択フォームからデータを取得すると、選択したアイテムをhtml選択フォームから取得しようとしています。私は次のコードでそうしようとしましたが、うまくいきません!Play Frameworkの

#{extends '/Admin/admin.html' /} 
#{form @save(id)} 

    #{ifErrors} 
     <p class="error"> 
      Please correct these errors. 
     </p> 
    #{/ifErrors} 

    <p> 
     <label>Adresse</label> 
     <input type="text" name="adress" value="${flash.adress}" id="adress" /> 
     <span class="error">#{error 'adress' /} 
    </p> 
    <p> 
     <label>Ville</label> 
     <select size="1" > 
      #{list items:cities, as:'city'} 
       <option name="city" id="city" value="${flash.city}">${city}</option> 
      #{/list} 
     </select> 
     <span class="error">#{error 'city' /} 
    </p> 
    <p> 
     <input type="submit" value="Publier l'annonce" /> 
    </p> 

#{/form} 

保存方法:

public static void save(long id, String adress, @Required Place city){ 
    System.out.println(city); 
    Admin.index(); 
} 

答えて

0

それはそのように動作しません、

はform.htmlは...街の値は常にNULLですが、アドレスフィールドには、正しい値を返しますそれは次のようにする必要があります:

public static void save(long id, String adress, @Required String city){ 
    // in order or so I think...: get the city ID or whatever, process all the data and save 
    System.out.println(city); 
    Admin.index(); 
} 

私はそれがあなたが探しているものと信じている別の方法です:
http://www.playframework.org/documentation/1.1.1/controllers#POJOobjectbinding

6

あなたのselectタグではないオプションタグを指定する必要があり、あなたは正しいフィールドを使用する必要があります。

<select size="1" name="city.id"> 
      #{list items:cities, as:'city'} 
       <option value="${city.id}">${city.name}</option> 
      #{/list} 
</select> 

は、バインディングの詳細については、ドキュメントを参照してください:Doc

0
#{select 'city', value:C2, id:'select1'} 
#{option 'C1'}City1#{/option}#{option 'C2'}City2#{/option}#{option 'C3'}City3#{/option} 
#{/select}