2012-07-23 17 views
3

我可以將Spring表單標記庫與Ajax結合使用嗎? 我無法檢索控制器內的表單輸入參數。他們總是nullSpring和Ajax

實際上有一種邏輯,表單永遠不會被提交。但是,我只能將字符串發送到我的控制器,而不是像表單提交那樣將對象映射到彈簧commandBean

表單接受commandBean

<form:form method="POST" commandName="clinicBean"> 
    Clinic Name: <form:input path="name" type="text" /><br/> 
    Clinic Address: <form:input path="address" type="text"/><br/> 
    <input type="button" value="Create Clinic" onclick="clinicAjax()"/> 
</form:form> 

Ajax的函數調用彈簧控制器

function clinicAjax(){ 
    alert('Inside Clinic Ajax Method'); 
    $.ajax({ 
     url: 'clinicAjax', 
     type: 'POST', 
     success: alert('Ajax Successful') 
    }); 
} 

彈簧控制器方法:

@RequestMapping(value="clinicAjax",method=RequestMethod.POST) 


public @ResponseBody String createClinic(@ModelAttribute("clinicBean") Clinic clinic){ 
     System.out.println("Ajax call successful"); 
     System.out.println(clinic); 
     System.out.println(clinic.getName()); 
     System.out.println(clinic.getAddress()); 
     return "SUCCESS"; 
    } 

它始終在System.out.println()語句中得到null

+0

添加一些相關代碼將有很大幫助。 – xyz 2012-07-23 11:49:03

+0

是否可以在不刷新頁面的情況下使用此配置? – zygimantus 2016-12-05 19:51:41

回答

5

問題是,你不在任何地方序列化你的表單,所以它沒有被髮送到服務器。

更改您的JavaScript代碼:

function clinicAjax(){ 
    alert('Inside Clinic Ajax Method'); 
    $.ajax({ 
     url: 'clinicAjax', 
     data: yourFormElement.serialize(); /* i.e. $('#formId').serialize(); */ 
     type: 'POST', 
     success: alert('Ajax Successful') 
    }); 
} 

替代yourFormElement使用jQuery對象,表示您的形式,它應該工作。