2014-10-08 1 views
0

저는 봄과 물건에 매우 익숙합니다.jsp 게시물은 컨트롤러에서 예기치 않은 메서드를 항상 호출합니다.

나는 봄을 배우려고 노력하고 있어요 이것은 로그인 페이지가 http://elizabetht.github.io/blog/2013/11/21/student-enrollment-using-mybatis-with-spring/

여기에 제공된 예제를 사용하고 마침내는 사용자 로그인 성공 페이지로 위임, 지금은 데이터의 테이블과 성공 페이지를 변경 , 데이터베이스에서 읽는 중. 사용자가 제출을 클릭하면 원하는 데이터를 데이터베이스에 저장하고 현재 테이블을 업데이트해야합니다.

그래서 나는 당신이 결국 온 클릭을 알 수 있습니다 이제

<div id="containers"> 
<% 
StudentLogin name = (StudentLogin)request.getAttribute("name"); 
List<Cube> personList = (List)request.getAttribute("message"); 
String userName = name.getUserName(); 
for(Cube cube: personList){ 
    String usedBy = cube.getUsedby().trim(); 
    boolean alreadyUsed = (usedBy.length()>0); 
    String ipAddress = cube.getIp(); 
    String cubeName = cube.getCubename(); 
    String details = cube.getDetails(); 
    String mainClass = (alreadyUsed)?"pricetab":"pricetabmid"; 
    String buttonName = (alreadyUsed)?"Blocked":"Click Here!"; 
    String usedBody = (alreadyUsed)?usedBy:userName; 
    String buttonclass = (alreadyUsed)?"button":"buttonmid"; 
    String priceFooterClass =(alreadyUsed)?"pricefooter":"pricefootermid"; 
%> 
    <div class="<%= mainClass%> "> 
    <h1> <%= ipAddress%> </h1> 
    <div class="price"> 
     <h2> <%= cubeName%> </h2> 
    </div> 
     <div class="infos"> 
     <h3> <%= details%> </h3> 
     <h2> <%= usedBody%> </h2> 
    </div> 
     <div class="<%= priceFooterClass%> "> 
     <div class="<%= buttonclass%> "> 
      <a href="#" onClick="suc(name)"> <%= buttonName%> </a> 
     </div> 
     </div> 
    </div> 
<% } %> 
</div> 

페이지 - 성공을 편집, 그래서 나는 포스트 호출을하도록되어이 스크립트를 제공하고 그 컨트롤러 -에 방법에 위임 받아야합니다

<script> 
     function suc(name){ 
      var username = ""; 
      var password = ""; 
      var studentLogin = name; 
      $.post('success', { userName : userName,password:password }, function(data) { 
       $('#containers').html(data).hide().slideDown('slow'); 
      }); 
     } 

</script> 

내 컨트롤러입니다 -

@Controller 
@Scope("session") 
public class StudentController { 

    private static final Logger logger = Logger.getLogger(StudentController.class); 

    @Autowired 
    private StudentService studentService; 

    @Autowired 
    private CubeService cubeService; 

    @RequestMapping(value="/signup", method=RequestMethod.GET) 
    public String signup(Model model) { 
     Student student = new Student();   
     model.addAttribute("student", student);  
     return "signup"; 
    } 

    @RequestMapping(value="/signup", method=RequestMethod.POST) 
    public String signup(@Valid @ModelAttribute("student") Student student, BindingResult result, Model model) {   
     if(result.hasErrors()) { 
      return "signup"; 
     } else if(studentService.findByUserName(student.getUserName())) { 
      model.addAttribute("message", "User Name exists. Try another user name"); 
      return "signup"; 
     } else { 
      studentService.save(student); 
      model.addAttribute("message", "Saved student details"); 
      return "redirect:login.html"; 
     } 
    } 

    @RequestMapping(value="/login", method=RequestMethod.GET) 
    public String login(Model model) {   
     StudentLogin studentLogin = new StudentLogin();  
     model.addAttribute("studentLogin", studentLogin); 
     return "login"; 
    } 


    @RequestMapping(value="success", method=RequestMethod.GET) 
    public String success(Model model) {    
     CubeData cubeData = new CubeData();  
     model.addAttribute("cubeData", cubeData); 
     return "success"; 
    } 

    @RequestMapping(value="success", method=RequestMethod.POST) 
    public String success(@Valid @ModelAttribute("cubeData") CubeData cubeData, BindingResult result,Model model) {  
     logger.debugf("sss", result); 
     return "signup"; 
    } 



    @RequestMapping(value="/login", method=RequestMethod.POST) 
    public String login(@Valid @ModelAttribute("studentLogin") StudentLogin studentLogin, BindingResult result,Model model) { 
     logger.debug(result); 
     logger.debug(studentLogin); 
     if (result.hasErrors()) { 
      return "failure"; 
     } else { 
      boolean found = studentService.findByLogin(studentLogin.getUserName(), studentLogin.getPassword()); 
      if (found) {   
       List<Cube> cubes = cubeService.getCubes(); 
       model.addAttribute("name", studentLogin); 
       model.addAttribute("message", cubes); 
       return "success"; 
      } else {     
       return "failure"; 
      } 
     } 

    } 
} 

내가 당 많은 실행하려고 m 조합,하지만 항상 버튼을 클릭하면 다시 로그인 페이지로 위임하고 오류 userName을 찾지 못했지만, 나는 그것이 성공의 블록에 컨트롤러에 정의되지 않은 이유를 알고 싶습니다.

+0

을했다, 당신은 "사용자 이름"으로 변수 이름을 부여했지만 그 변수에 액세스 할 때, 당신은 사용 된 "userName"한번 확인해보십시오 .... – ssm

답변

0

문제는 ... 포스트 방법의 URL였습니다을 변경하고 SUC 함수에서

$.post('/test/success.html', { userName : userName,password:password }, function(data) { 
       $('#containers').html(data).hide().slideDown('slow'); 
      }); 
관련 문제