2012-11-02 624 views
0

您好我有一個要求,我必須從struts操作類中檢查一些東西,然後將結果發送回瀏覽器使用JS fx'中調用的ajax調用。問題是我不是能打到動作類和控制檯拋出以下錯誤: org.apache.struts.action.RequestProcessor processActionCreate的路徑/ ChangePwdAjax無操作情況下可以創建 拋出java.lang.ClassNotFoundException:test.ChangePwdAjaxAction.javaAJAX調用struts操作不起作用

該類已編譯且包上下文有效test.ChangePwdAjaxAction.java

任何想法什麼和在哪裏做錯了?

這是我寫到目前爲止。

JS代碼

function checkError() 
{ 
var valuePassword="test"; 

var url = "/test/ChangePwdAjax.do?newPass="+valuePassword; 
     var xmlHTTP = getXMLHTTPRequest(); 


     xmlHTTP.onreadystatechange = function() { 
     handleResponse(xmlHTTP); } 

     xmlHTTP.open("GET",url,true); 

     xmlHTTP.send(); 


} 

function handleResponse(xmlHTTP){ 
    alert("handleResponse"); 
     if (xmlHTTP.readyState == 4 && xmlHTTP.status == 200) { 
      alert("handleResponse"); 
      var xmlDoc = xmlHTTP.responseXML; 

      alert(xmlDoc.documentElement.getElementsByTagName("pwdFlag")[0].text); 

     }  
    } 

function getXMLHTTPRequest(){ 
    alert("getXMLHTTPRequest"); 
     if (window.XMLHttpRequest) { 
      return new XMLHttpRequest(); 
     } 
     // IE 
     else if (window.ActiveXObject) { 
      return new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     else{ 
     alert("XMLHttpRequest is not supported!"); 
     } 
    } 

Action類代碼

public class ChangePwdAjaxAction extends Action { 


    public ActionForward execute(final ActionMapping mapping, final ActionForm form, 
      final HttpServletRequest request,final HttpServletResponse response) 

    { 

     System.out.println("----IN--AJAX ACTION----------"); 
     final HttpSession session= request.getSession(false); 

     if(session==null || session.getAttribute("user_id")==null){ 

      return mapping.findForward("sessionexpired"); 
     } 


     final String user_id=(String)session.getAttribute("user_id"); 

     try{ 


      final BusinessDelegate busdel=new BusinessDelegate(user_id,session.getId()); 

      String newpwd = (String)request.getParameter("newPass"); 



      boolean b=busdel.checkOldPWd(user_id, newpwd); 
      //checking return values from bus delegate 
      response.setContentType("text/xml"); 
      PrintWriter printwriter = response.getWriter(); 

      printwriter.println("<?xml version=\"1.0\"?>"); 
      printwriter.println("<Root>"); 

      if(b) 
      { 
       System.err.println("----New password Failed--Y--------"); 
      printwriter.println("<pwdFlag>"+"Y"+"</pwdFlag>"); 
      } 
      else 
      { 
       System.out.println("----New password OK---N-------"); 
       printwriter.println("<pwdFlag>"+"N"+"</pwdFlag>"); 
      } 


      printwriter.println("</Root>"); 


      }catch(Exception e){ 
       logger.logCommon("Login Action : Login Process in Action : ", "EXCEPTION"); 
       logger.logError(e); 

      } 


     return null; 
    } 


} 

的struts-config進入

<action path="/ChangePwdAjax" type="test.ChangePwdAjaxAction.java"/> 
+0

這哎呀必須是<動作路徑= 「/ ChangePwdAjax」 類型= 「test.ChangePwdAjaxAction」/>而不是<動作路徑= 「/ ChangePwdAjax」 類型=「test.ChangePwdAjaxAction.java 「/>。感謝您的解決! – user1697113

回答

0

哎呀這必須是

action path="/ChangePwdAjax" type="test.ChangePwdAjaxAction"/>

而非

action path="/ChangePwdAjax" type="test.ChangePwdAjaxAction.java"/>