2010-07-22 50 views
1

我有以下的動作在我struts.xml中聲明:參數 「法」 不工作(Struts的1)

<action path="/updateAccountInfo" 
      type="org.myCompany.UpdateAccountAction" 
      name="myAccountForm" 
      scope="session" 
      validate="true" 
      parameter="method" 
      input="/updateAccountInfo.jsp"> 
     <forward name="success" path="/updateAccountInfo.jsp" /> 
    </action> 

在我的JSP頁面中,我有以下形式:

<html:form action="/updateAccountInfo.do"> 
    <input type="hidden" name="method" value="sendMessage" /> 

在我的java類中,我有以下方法:

public final ActionForward sendMessage(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request, final HttpServletResponse response) throws Exception { 
    System.out.println("sending"); 
    return null; 
} 

而不是運行sendMessage,Struts調用execute方法。爲什麼?我的struts-config錯了嗎?或者我錯過了另一個配置設置?

回答

7

請首先確保您的操作擴展了DispatchAction。您可能不應該重寫該類中的execute方法,因爲該方法負責提取請求參數並調用相應的方法。如果你重寫執行這個邏輯將不再執行。

+1

我重寫了執行方法。這似乎打破了DispatchAction的方法調用邏輯.... – David 2010-07-22 15:20:56

1

您的UpdateAccountAction是否擴展DispatchAction? Here's a working example可以做你想做的事情。

+0

是的,它確實擴展了DispatchAction。我會嘗試將我的代碼與示例進行比較,看看能否發現任何差異..... – David 2010-07-22 15:15:34

0

首先,在html:form action =「/ updateAccountInfo.do」>中提到了updateAccountInfo.do並且想要調用sendMessage。怎麼可能?他們有區別。

其他的事情是,你需要調度行動而不是行動類。看起來你需要使用多種方法來在struts中調用,因此建議使用調度類。

請參閱mkyon站點以獲取有關如何使用分派操作以及何時需要的更多詳細信息。