2014-02-18 2 views
0

struts2 액션을 호출하기 위해 ajax 호출을 작성했습니다.이 메소드는 기본적으로 메소드를 실행하지만 struts.xml에 정의 된 메소드는 호출하지 않습니다.Struts2 url이 올바른 액션을 수행하지 않음

function showCustomer(str) { 
    emailRequest = createRequest(); 
    if (emailRequest == null){ 
     alert("Unable to create request"); 
     }else{ 
     var emailValue = document.getElementById("email").value; 
     var email = escape(emailValue); 
     alert(email) 
     var url= "recoverPassword!recoverPassword?email="+email; 
     alert(url) 
     emailRequest.onreadystatechange = showemailStatus; 
     emailRequest.open("POST", url, true); 
     emailRequest.send(null); 
    } 
} 

function showemailStatus() { 
    if (emailRequest.readyState == 4) { 
     if (emailRequest.status == 200) { 
      if (emailRequest.responseText.match("EamilIdExists")) { 
       document.getElementById("show").style.display='block'; 
      } else { 
        document.getElementById("email").focus(); 
        alert("Email id doesnot exist"); 
        return; 
      } 
     } 
    } 
} 

struts.xml :

<action name="recoverPassword" class="com.astro.action.CheckEmailAction" method="recoverPassword"> 
      <result type="stream" name="success"> 
       <param name="contentType">text/html</param> 
       <param name="inputName">inputStream</param> 
      </result> 
      <result type="stream" name="input"> 
       <param name="contentType">text/html</param> 
       <param name="inputName">inputStream</param> 
      </result> 
     </action> 
+0

이 ** 어떤 대답을 수락하지 마십시오. 답변이 도움이되면 답의 왼쪽 상단 모서리에있는 흰색 'V'표시를 클릭하여 녹색으로 바꿉니다. 당신과 답변자 모두 평판 포인트를 얻게 될 것이고, 그것은 곧바로 미래 방문객들에게 대답이 옳았다는 것을 알릴 것입니다. 그들이 일했을 때도 옛날 대답을해야합니다. 고마워요 andrea –

답변

0
  1. struts.xml

    코드에 정의 된 방법으로 올바른 조치를 호출하는 자바 스크립트의 URL을 형성하는 방법을 가르쳐주세요

    동작 이름 변경 : 동일한 동작 클래스는 여러 가지 방법으로 여러 가지 이름으로 여러 번 선언 할 수 있습니다. 이름을 변경하면 더 이상 문자 (동적 메서드 호출)를 사용할 필요가 없으므로 struts.xml에서 명시 적으로 활성화해야 보안 문제가 발생할 수 있으므로 피하는 것이 좋습니다.

    다음

    당신은 할 수

    <action class = "com.astro.action.CheckEmailAction" 
         name = "recoverPasswordAction" 
         method = "recoverPassword"> 
    ... 
    

    <action class = "com.astro.action.CheckEmailAction" 
         name = "doSomethingElseAction" 
         method = "doSomethingElse"> 
    ... 
    

    (항상 액션이 너무 많은 다른 논리 "작업"을 수행 할 것을 기억)를

  2. 자바 스크립트로 삽입하려면 <s:url> (필요한 경우 네임 스페이스 사용) 및 <s:param> (필요한 경우)을 사용하십시오. 당신이 생성 된 URL에 자바 스크립트를 추가 할 필요가 귀하의 경우 귀하의 PARAM이 페이지에서 런타임에 읽기 : 당신이하는 방식 **으로

    var url = "<s:url action="recoverPasswordAction" />?email="+email; 
    
+0

. 나는 투표하기에 충분한 평판 포인트가 없다. –

+0

VOTE에 평판 점수가 15 점이 필요하지만, 대답의 왼쪽 상단에 흰색 V를 표시하여 이미 ACCEPT에 대한 평판이 충분합니다. –

+0

해결책이 작동하지 않습니다. –

관련 문제