2014-03-24 36 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

我不明白你在说什么,你能否更新你的问题? –