2017-06-15 46 views
0

我想通過在文本框中輸入新的值(例如他的名字)來編輯用戶的數據,並在他的個人資料中顯示這些更改。 我試圖使用Ajax,但我不明白該網址應該在那裏。 這與編輯表單和Ajax腳本我的JSP文件:如何更新按鈕上更改的數據?

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<script type="text/javascript"> 
    $("edit").click(function() { 
     var firstName = $(request.getParameter("firstname")).val(); 
     $.ajax({ 
      url: '', 
      type: 'POST', 
      data: { 
       firstName: firstName 
      } 
     }); 
    }); 
</script> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>${title}</title> 
</head> 
<body> 
<h4>To edit your information fill the fields, please.</h4> 
    <form name='f' action="${pageContext.request.contextPath}/j_spring_security_check" method='POST'> 
     <table> 
     <tr> 
      <td>First Name:</td> 
      <td><input type='text' name='firstname' id='firstname' value='${firstname}'></td> 
     </tr> 
     <tr> 
      <td><input name="edit" type="submit" value="Submit" /></td> 
     </tr>  
     </table> 
    </form> 

我有更新,並得到在類中的一個名字:方法:

public class UserInfoDAOImpl extends JdbcDaoSupport implements UserInfoDAO {  
    @Autowired 
    public UserInfoDAOImpl(DataSource dataSource) { 
     this.setDataSource(dataSource); 
    }  
//.....other methods 

@Override 
public void editFirstName(String userName, String fName){ 
    String sql = "update Users set FirstName = ? where Username = ?"; 
    Object[] params = new Object[] {fName, userName}; 
    this.getJdbcTemplate().update(sql, params); 
} 

@Override 
    public String getFirstName(String userName) { 
     // TODO Auto-generated method stub  
     String sql = "select u.FirstName from Users u where u.Username = ? "; 
     Object[] params = new Object[] { userName };   
     String firstName = (String)getJdbcTemplate().queryForObject(sql, params, String.class); 
     return firstName; 
    } 
} 

所以,我真的不明白,以使用這些已編寫的方法更新數據並在用戶配置文件中獲取這些更改。 我是新來的Ajax,所以我很樂意得到任何幫助。

回答

0

你在JSP上寫錯了,j_spring_security_check是默認的URL Spring Login。

要更新名字,您必須在您的Controller de上處理Ajax請求,執行@RequestMapping@ResponseBody

+0

謝謝你的回答。你能更詳細地瞭解默認網址嗎?爲什麼這是錯的? –

+0

你知道Spring Security嗎?請參考officiel doc [Spring reference](http://docs.spring.io/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#ns-form-and-basic) –