2017-02-23 5 views
0

私は、ユーザーがMongodbから顧客を検索できるようにするサンプルアプリケーションを持っていました。(それはうまくいきます)、アプリケーションをアップグレードしようとしました。ユーザーはIDを持つ顧客を追加、更新、削除することができます。Springブート、Mongodb、jquery ajax、java

新しい顧客を追加したり削除したりするには、いくつかの方法を試しました。しかし、それはそれに反応する。解決方法その My FULL CODE

私のhtmlページ私のCustomerRestControllerクラスのほかに

<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
</head> 
<body> 
    <input name="search" type="text" maxlength="100" id="search"/> 
    <button onclick="searchID()"> Search ID </button> 
    <button onclick="showAll()"> Show All </button> 

    <div id="persons"></div> 

    <script> 
     function searchID() 
     { 
      var id = document.getElementById("search").value; 
      $("#persons").html(""); 


      $.getJSON("http://localhost:8080/customers/" + id, function(data) 
      { 
       for (var i in data) { 
        $('#persons').append("<p>ID: " + data[i].id + "</p>") 
        $('#persons').append("<p>First name: " + data[i].firstName + "</p>") 
        $('#persons').append("<p>Last name: " + data[i].lastName + "</p><br>") 
       } 
      }); 


     } 

     function showAll() 
     { 
      $("#persons").html(""); 

      $.getJSON("http://localhost:8080/customers/", function(data) 
      { 
       for (var i in data) { 
        $('#persons').append("<p>ID: " + data[i].id + "</p>") 
        $('#persons').append("<p>First name: " + data[i].firstName + "</p>") 
        $('#persons').append("<p>Last name: " + data[i].lastName + "</p><br>") 
       } 
      }); 
     } 
    </script> 
     <h2>Add Customer</h2> 
     <form action="http://localhost:8080/customers" method="POST"> 
         ID <input type="text" id="id" name="id" /><br /> 
      FirstName <input type="text" id="firstName" name="firstName" /><br /> 

         LastName <input type="text" id="lastName" name="lastName" /><br /> 

      <input type="submit" /> 
     </form> 
     <h3>Update a customer</h3> 
     <form action="http://localhost:8080/updateCustomer" method="POST"> 
         ID <input type="text" id="id" name="id" /><br /> 
      FirstName <input type="text" id="firstName" name="firstName" /><br /> 

         LastName <input type="text" id="lastName" name="lastName" /><br /> 

      <input type="submit" /> 
     </form> 
     <h4>Delete a customer</h4> 
     <form action="http://localhost:8080/deleteCustomer" method="POST"> 
         ID <input type="text" id="id" name="id" /><br /> 
      <input type="submit" /> 
     </form> 

</body> 
</html> 

:あなたがビューのリクエストを処理するためのコントローラメソッドを持っていないようだ

@RestController 
public class CustomerRestController 
{ 

    @Autowired 
    CustomerMongoRepository customerRepository; 
    @Autowired 
    private CustomerDAO customerDAO; 

    @CrossOrigin 
    @GetMapping("/customers") 
    public ArrayList<Customer> getCustomers() 
    { 
     customerDAO = new CustomerDAO(); 
     return customerDAO.getCustomers(); 
    } 

    @CrossOrigin 
    @GetMapping("/customers/{id}") 
    public ArrayList<Customer> getCustomer(@PathVariable("id") int id) 
    { 
     customerDAO = new CustomerDAO(); 
     return customerDAO.get(id); 
    } 

    @RequestMapping(method = POST) 
    @ResponseStatus(CREATED) 
    public void createCustomer(@RequestBody Customer customer, 
      HttpServletResponse response) { 

     customerDAO.save(customer); 
     response.setHeader("Location", String.format("/rest/customers/%s", 
       customer.get(id))); 
    } 

    @RequestMapping(value = "/{id}", method = GET) 
    @ResponseBody 
    public Customer showCustomer(@PathVariable Customer.id id) { 

     return customerDAO.findBy(id); 
    } 

    @RequestMapping(value = "/{id}", method = PUT) 
    @ResponseStatus(OK) 
    public void updateCustomer(@RequestBody Customer customer) { 

     customerDAO.save(customer); 
    } 

    @RequestMapping(value = "/{id}", method = DELETE) 
    @ResponseStatus(OK) 
    public void deleteCustomer(@PathVariable Customer.id id) { 

     customerDAO.delete(id); 
    } 

} 
+0

あなたは例外を示す抱えている正確な問題を提供してください。 – codependent

+0

これは単に顧客を検索してすべての顧客を表示するだけで反応しますが、既存の顧客の追加や削除には反応しません:) –

答えて

0

@RequestMapping(value = "/{id}", method = DELETE) 
@ResponseStatus(OK) 
public void deleteCustomer(@PathVariable Customer.id id) { 

    customerDAO.delete(id); 
} 

期待していますあなたのコントローラを変更

<h4>Delete a customer</h4> 
<form action="http://localhost:8080/deleteCustomer" method="POST"> 
       ID <input type="text" id="id" name="id" /><br /> 
    <input type="submit" /> 
</form> 
:が、あなたのビューが POST /deleteCustomerを送信

@RequestMapping(value = "/deleteCustomer", method = POST) 
@ResponseStatus(OK) 
public void deleteCustomer(@RequestParam String id) { 
    customerDAO.delete(id); 
} 
関連する問題