2017-06-15 1 views
0

Je veux éditer les données de l'utilisateur en entrant une nouvelle valeur dans la zone de texte comme son prénom et montrer ces changements dans son profil. J'ai essayé d'utiliser Ajax mais je ne comprends pas ce que l'URL devrait être là. C'est mon fichier jsp avec formulaire d'édition et un script Ajax:Comment puis-je mettre à jour les données modifiées sur le bouton?

<%@ 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> 

J'ai mise à jour et obtenir des méthodes pour le premier nom dans l'une des classes:

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; 
    } 
} 

Je ne comprends vraiment pas utiliser ces méthodes déjà écrites pour mettre à jour les données et obtenir ces changements dans le profil de l'utilisateur. Je suis nouveau à Ajax donc je suis heureux d'obtenir de l'aide.

Répondre

0

Vous avez tort sur votre JSP, le j_spring_security_check est la connexion par défaut de l'URL Spring. Pour la mise à jour du nom, vous devez faire @RequestMapping@ResponseBody sur votre contrôleur de gérer la demande Ajax.

+0

Merci pour votre réponse. Pouvez-vous être plus précis sur l'URL par défaut? Pourquoi est-ce faux? –

+0

Connaissez-vous Spring Security? veuillez consulter le document officiel [Référence du printemps] (http://docs.spring.io/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#ns-form-and-basic) –