2012-05-28 25 views
1

請告訴我該怎麼準備intercetor工作 我使用它現在&發現strage行爲準備攔截器如何在struts2中工作?

prepare() 
validate() 
execute() 

這些方法

所以當我打它稱爲3倍

prepare() 
validate() 
execute() 
prepare() 
validate() 
execute() 
prepare() 
validate() 
execute() 
請求

我不知道它是什麼問題 根據我的理解,它應該只運行準備方法& sh當用戶點擊提交時,預填充數據表格&然後它應該提交數據。

請解釋

<action name="updatebusinessinfo" class="com.controller.UpdateBusinessDetails"> 

      <interceptor-ref name="params"/> 
      <!-- 
      <interceptor-ref name="prepare"/> 

      <interceptor-ref name="basicStack"/> 
      --> 

      <interceptor-ref name="fileUpload"> 
        <param name="maximumSize">2097152</param> 
        <param name="allowedTypes">image/png,image/gif,image/jpeg,image/pjpeg</param> 
      </interceptor-ref> 
      <interceptor-ref name="defaultStack"></interceptor-ref> 
      <result name="success">businessinfo.jsp</result> 
      <result name="input">businessinfo.jsp</result> 
      <result name="error">businessinfo.jsp</result> 
     </action> 

是朋友,我已經取得了在struts.xml文件中的錯誤。 現在請告訴我如何在prepare()方法中接收url參數? http://www.myweb.com/updatebusinessinfo/23

我嘗試以下,但沒有任何進一步的信息不靈

<action name="updatebusinessinfo/*" class="com.controller.UpdateBusinessDetails"> 
<param name="id">{1}</param> 

      <interceptor-ref name="params"/> 
      <!-- 
      <interceptor-ref name="prepare"/> 

      <interceptor-ref name="basicStack"/> 
      --> 

      <interceptor-ref name="fileUpload"> 
        <param name="maximumSize">2097152</param> 
        <param name="allowedTypes">image/png,image/gif,image/jpeg,image/pjpeg</param> 
      </interceptor-ref> 
      <interceptor-ref name="defaultStack"></interceptor-ref> 
      <result name="success">businessinfo.jsp</result> 
      <result name="input">businessinfo.jsp</result> 
      <result name="error">businessinfo.jsp</result> 
     </action> 
+0

請發表您是如何定義你的攔截器棧更好的後完成struts.xml文件。 –

+0

像這樣的問題發佈不久前,OP正在意外地進行3次ajax調用......如果您使用的默認堆棧也是我的猜測。 – Quaternion

回答

1

那麼它真的很難說什麼,這是爲什麼happening.we仍然期望從你提供關於你想什麼更多細節去做?你打的什麼URL,關於配置的信息以及關於你的應用程序的其他信息。如果您在短期一種init方法使我們能夠做任何初始化工作前的實際繁重的工作將開始實施的可製備interface.Its

準備方法纔會被調用。

準備方法之前調用你的執行method.I建議你去通過編制方法以及如何實際卻是由棧調用的工作。

在一個類似的方式S2將調用Action類的validate方法,如果你已經實現了它,將驗證數據,按照本方法中提供的實現。

這只是流程的概述,我仍然建議提供更多關於您的環境的信息以獲得任何良好的輸入。

3

就關於這個問題,可能會派上用場,以人找有關準備攔截信息的一些提示:

  • 的DefaultStack Struts2中已經包含準備攔截器,所以如果你有他們兩個,你將有2調用prepare()。通常你不需要這個。
  • 在DefaultStack的準備攔截器被稱爲PARAMS攔截之前,所以你不會有在準備()方法的請求參數。如果你想用params做一些事情(例如從一個ID獲取數據庫中的東西),你將無法做到。這裏

看,看什麼基本/默認堆在Struts2的: http://struts.apache.org/release/2.0.x/docs/struts-defaultxml.html

有一個「paramsPrepareParamsStack」這就是使用PARAMS之前和準備後,讓你有你的PARAMS在準備()。