Информация из веб-интерфейса никогда не достигает бэкэнда (jsp) - PullRequest
0 голосов
/ 26 июня 2018

The id is waht i expect После входа в систему на странице администратора я пытаюсь использовать saveOrUpdate или delete, но идентификатор не отправляется бэкэнду. Delete и saveOrUpdate находятся в UserController, а LogIn - в LoginCotroller, я думаю, что это проблема с сессиями, но я довольно заурядный в клиент-серверных приложениях. Я использовал System.out.println, чтобы помочь мне увидеть, что происходит в бэкэнде, но с самого начала я получаю нулевое значение, когда ожидаю идентификатор. Я использовал этот JSP в другом проекте без входа в систему, и это было нормально.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script 
src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"> 
</script>
</head>
<body onload="load();">

<% if (session.getAttribute("loggedInUserA").equals(1) ) { %>



     <input type="hidden" id="userId">
    Name:     <input type="text" id="name" required="required" name="name"><br>
    Password: <input type="text" id="password" required="required" name="password"><br>
    Acces:    <input type="text" id="acces" required="required" name="acces"><br>
    <button onclick="submit();">Submit</button>



    <table id="table" border=1>
        <tr> <th> Name </th> <th> Password </th> <th> Acces </th> <th> Edit </th> <th> Delete </th> </tr>

    </table>


<script type="text/javascript">
data = "";
submit = function(){

        $.ajax({
            url:'saveOrUpdate',
            type:'POST',
            data:{userId:$("#userId").val(),name:$('#name').val(),password:$('#password').val(),acces:$('#acces').val()},
            success: function(response){
                    alert(response.message);
                    load();    
            }              
        });        
}

delete_ = function(id){  
    console.log('id', id);

     $.ajax({
        url:'delete',
        type:'POST',
        data:{userId:id},
        success: function(response){
                alert(response.message);
                load();
        }              
    });



edit = function (index){
    $("#userId").val(data[index].userId);
    $("#name").val(data[index].name);
    $("#password").val(data[index].password);
    $("#acces").val(data[index].acces);

}


load = function(){ 
    $.ajax({
        url:'list',
        type:'POST',
        success: function(response){
                data = response.data;
                $('.tr').remove();
                for(i=0; i<response.data.length; i++){   
                    console.log(response.data[i].userId);
                    $("#table").append("<tr class='tr'> <td> "+response.data[i].name+" </td> <td> "+response.data[i].password+" </td> <td> "+response.data[i].acces+" </td>  <td> <a href='#' onclick= edit("+i+");> Edit </a>  </td> </td> <td> <a href='#' onclick='delete_("+response.data[i].userId+");'> Delete </a>  </td> </tr>");
                }          
        }              
    });

}

</script>


  <h2>
    <a href="/SpringMVC/">Back!!!</a>
</h2>

<% } else {
String redirectURL = "http://youtube.com";
response.sendRedirect(redirectURL);  } %>

UserController

@Controller
@RequestMapping(value="user")
public class UserController {

    @Autowired
    UserServices userServices;


    @RequestMapping(value = "/page", method = RequestMethod.GET)
    public ModelAndView getPage() {
        ModelAndView view = new ModelAndView("admin");
        return view;
    }

    @RequestMapping(value = "/saveOrUpdate", method = RequestMethod.POST)
    public @ResponseBody Map<String, Object> getSaved(User user) {
        Map<String, Object> map = new HashMap<String, Object>();

        if (userServices.saveOrUpdate(user)) {
            map.put("status", "200");
            map.put("message", "Your record have been saved successfully");
        }

        return map;
    }

    @RequestMapping(value = "/list", method = RequestMethod.POST)
    public @ResponseBody Map<String, Object> getAll(User user) {
        Map<String, Object> map = new HashMap<String, Object>();

        List<User> list = userServices.list();

        if (list != null) {
            map.put("status", "200");
            map.put("message", "Data found");
            map.put("data", list);
        } else {
            map.put("status", "404");
            map.put("message", "Data not found");

        }

        return map;
    }

    @RequestMapping(value = "/delete", method = RequestMethod.POST)
    public @ResponseBody Map<String, Object> delete(User user) {
        Map<String, Object> map = new HashMap<String, Object>();

        if (userServices.delete(user)) {
            System.out.println("UserController "+user.getUserId());
            map.put("status", "200");
            map.put("message", "Your record have been deleted successfully");
        }

        return map;
    }

    @RequestMapping(value = "/page1", method = RequestMethod.GET)
    public ModelAndView getPage1() {
        ModelAndView view = new ModelAndView("user1");
        return view;
    }

}

LoginController

@Controller
@RequestMapping(value="user")
public class LoginController {

    @Autowired
    UserServices userServices;

    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public String showLoginForm() {
        return "login";
    }


    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public String verifyLogin(@RequestParam String name,@RequestParam String password, 
            HttpSession session,Model model) {

        User user=userServices.loginUser(name, password);
        if (user==null) {
            System.out.println("login control user null");
            model.addAttribute("loginError","Error logging in. Please try again");
            return "login";
        }
        session.setAttribute("loggedInUser", user);
        session.setAttribute("loggedInUserA", user.getAcces());
        return "admin";
    }
}

UserServiceImplementation

@Service
public class UserServicesImpl implements UserServices {

    @Autowired
    UserDao userDao;
    @Override
    public List<User> list() {
        // TODO Auto-generated method stub
        return userDao.list();
    }

    @Override
    public boolean delete(User user) {
        // TODO Auto-generated method stub
        System.out.println("UserServices "+user.getUserId()+"  "+user.getName() +"  "+user.getPassword() + "  "+user.getAcces());
        return userDao.delete(user);
    }

    @Override
    public boolean saveOrUpdate(User user) {
        // TODO Auto-generated method stub
        System.out.println("UserServices "+user.getUserId()+"  "+user.getName() +"  "+user.getPassword() + "  "+user.getAcces());
        return userDao.saveOrUpdate(user);
    }

    public User loginUser(String name, String password) {
        User user=userDao.findUser(name);
        if (user != null && user.getPassword().equals(password)) {
            System.out.println("User Login"+user.getUserId()+"  "+user.getName());
            return user;
        }
        return null;
    }

}

UserDaoImplementation

@Repository
@Transactional
public class UserDaoImpl implements UserDao {


    @Autowired
    SessionFactory session;

    @SuppressWarnings("unchecked")
    @Override
    public List<User> list() {
        // TODO Auto-generated method stub
        return session.getCurrentSession().createQuery("from User").list();
    }

    @Override
    public boolean delete(User user) {
        // TODO Auto-generated method stub
        try {
            System.out.println("UserDaoImpl"+user.getUserId());
            session.getCurrentSession().delete(user);
        }catch(Exception ex) {
        return false;
        }

        return true;
    }

    @Override
    public boolean saveOrUpdate(User user) {
        // TODO Auto-generated method stub
        session.getCurrentSession().saveOrUpdate(user);
        return true;
    }

    @Override
    public User findUser(String name) {
        Criteria criteria = session.getCurrentSession().createCriteria(User.class);
        User user=(User) criteria.add(Restrictions.eq("name", name)).uniqueResult();
        return user;
    }

}

1 Ответ

0 голосов
/ 27 июня 2018

Когда вы отправляете Ajax, проверьте, соответствует ли значение id тому, что вы ожидаете:

submit = function(){
   console.log($("#userId").val())
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...