2014-03-24 54 views
1

我想知道如何通過HashMap其中包含String和double值從Action到javascript代碼?Struts2:包含字符串和雙精度值的映射對於雙精度值返回null

當我編輯一些具有雙值的字段時,我在這些字段上有空,我該如何解決?

操作:

public String query() { 
    Service = new ServiceImpl(); 
    v = new Vehicule(); 
    v= Service.getByImmat(im); 
    map.put("kilo", v.getKilo()); //double value 
    /*SimpleDateFormat formatter5=new SimpleDateFormat("yyyy-MM-dd"); 
    String formats1 = formatter5.format(ss1);*/ 
    map.put("datepicker", formats1); 
    map.put("etat", v.getEtat());//string value 
    map.put("capacite_bagages", v.getCapacite_bagage()); //double value 
    return "success"; 
} 

阿賈克斯:

$.ajax({ 
    type: 'POST', 
    url : "<s:url action='query'/>", 
    dataType : 'json', 
    data: { imm : selectedValue}, 
    success: function(result) { 
     $.each(result, function(key,value){ 
      $("#"+key).val(value); 
     }); 
    }); 

編輯:

我想更新一些值(string,Date and double),爲此我通過這些參數爲map<String,object>從動作到jsp頁面。

public String query() { 
     Service = new ServiceImpl(); 
     v = new Vehicule(); 
     v= Service.getByImmat(im); 
     map.put("kilo", v.getKilo()); //double value 
     SimpleDateFormat formatter5=new SimpleDateFormat("yyyy-MM-dd"); 
     String formats1 = formatter5.format(v.getDate()); 
     map.put("datepicker", formats1); 
     map.put("etat", v.getEtat());//string value 
     map.put("capacite_bagages", v.getCapacite_bagage()); //double value 
     return "success"; 
    } 

我展示它在我的JSP,我在jsp頁面編輯它,但是當我想保存的結果,雙值取NAN! :

public String modifiervehicule() { 

     Service = new ServiceImpl(); 
     v= new Vehicule(); 
     v = vehiculeService.getVehiculeByImmat(immatricul); 
     v.setKilo((Double)getKilo()); 
     v.setDate((Date)getDate()); 
     v.setEtat(getEtat()); 
     v.setCapacite_bagage((Double)getCapacite_bagages()); 

     v = Service.update(v); 
     return "success"; 

    } 

千場(雙)具有編輯後空值,但如果我用整型值來編輯它,它不會有一個空值,

我想是因爲public double getkilo()應該返回一個雙沒有對象我通過在地圖!!)

編輯2:

JSP:

<script type="text/javascript"> 
$(document).ready(function() 
    { 

     $('#imm').change(function() 
     { 


      var selectedValue = $('#imm').val(); 
      if ($.trim(selectedValue).length > 0) 
      { 
       $.ajax(
       { 
        type: 'POST', 
        url : "<s:url action='query'/>", 
        dataType : 'json', 
        data: { imm : selectedValue}, 
        success: function(result){                      
         $.each(result, function(key,value) 
         {      


           $("#"+key).val(value); 

                  });         
    }); 
</script> 

<s:form cssStyle="border:0;" validate="true" action="modifiervehicule" namespace="/" > 
<s:select id="imm" label="immatriculation" list="immatriculs" name="immatricul"></s:select> 
<s:textfield id="kilo" name="kil" label="kilometrage" size="15" ></s:textfield> 
<s:textfield id="etat" name="etat" label="etat" size="15" ></s:textfield> 
<s:textfield id="datepicker" name="date" label="date" size="15" ></s:textfield> 
<s:textfield id="capacite_bagages" name="capacite_bagages" label="capacité de bagages" size="15"></s:textfield> 

<s:submit style="height:30px; width:125px" name="Valider" value="Valider"></s:submit> 
</s:form> 

Struts.xml

<action name="query" class="action.Gestion" method="query"> 
    <result name="success" type="json" > 
     <param name="root">map</param> 

    </result> 

</action> 
+0

你的代碼有一些片斷丟失(服務=,等等)。什麼是地圖?雙變量有哪些值?什麼打印在頁面上? –

+0

私人服務服務; //服務連接到數據庫hibernate 私人Map map = new HashMap (); – lilyana

回答

1

充分利用map映射對象而不是字符串。例如

Map<String, Object> map= new HashMap<>(); 

現在你必須把對象裏面,如果值是null它會繼續,你可以JSON結果由success處理器返回之後獲得的價值。另見 how to exclude properties with null values from the JSON result

+0

我仍然有一個空值! – lilyana

+0

我想更新一些值(字符串,整數和雙精度),因此我將這些參數從動作傳遞到映射到jsp頁面。 我在我的jsp中顯示它,我編輯它,但是當我想保存結果時,所有double值都取一個NAN! – lilyana

+0

我不明白你在說什麼,你能否更新你的問題? –