2012-05-28 4 views
1

Скажите, пожалуйста, как готовить intercetor работы Я использую его сейчас & нашли поведение StrageКак подготовить перехватчик работает в struts2?

prepare() 
validate() 
execute() 

эти методы

поэтому, когда я попал в заявку он называется 3 раза

prepare() 
validate() 
execute() 
prepare() 
validate() 
execute() 
prepare() 
validate() 
execute() 

Я не знаю, в чем проблема с этим По моему мнению, он должен только запустить метод подготовки & sh ow preopulated data form &, когда пользователь нажимает кнопку «Отправить», он должен отправить данные.

Пожалуйста, объясните

<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 файле. Теперь скажите, пожалуйста, как мне получить параметр url в методе prepare()? 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 делал вызов ajax случайно 3 раза ... Если вы используете стек по умолчанию, который тоже будет моим догадкой. – Quaternion

ответ

1

Ну без какой-либо дополнительной информации, его действительно трудно сказать, что и почему это happening.we все еще ожидают от вас содержит более подробную информацию о том, что вы пытаетесь делать? какой URL вы нажимаете, информацию о конфигурации и любую другую информацию о вашем приложении.

Метод подготовки будет вызываться только в том случае, если вы внедрили подготовленный интерфейс. Короче говоря, это метод init, который позволяет нам выполнять любую операцию инициализации до начала реальной тяжелой работы.

Метод подготовки будет вызван до вашего метода execute. Я предлагаю вам пройти через метод Prepare и как фактически он вызывается стеком.

На подобным образом S2 будет вызывать метод проверки вашего класса действий, если вы реализовали его и будет проверять данные в соответствии с реализацией предусмотренного внутри метода.

Это всего лишь обзор потока, и я по-прежнему предлагаю предоставить больше информации о вашем контексте, чтобы получить хорошие входы.

3

Просто некоторые намеки этого вопроса, который может пригодиться для тех, кто ищет информацию о Prepare Interceptor:

  • DefaultStack в struts2 уже включает в себя Приготовьте перехватчик, так что, если вы включите их как вы будете иметь 2 вызовы для подготовки(). Обычно ты этого не хочешь.
  • В DefaultStack Prepare перехватчик называется ПЕРЕД ПЕРСОНАЛОМ Params, поэтому у вас не будет параметров запроса в методе prepare(). Если вы хотите что-то сделать с параметрами (например, получить что-то из БД с идентификатором), вы не сможете.

Посмотрите сюда, чтобы увидеть, что основной стек/по умолчанию имеет в struts2: http://struts.apache.org/release/2.0.x/docs/struts-defaultxml.html

Существует «paramsPrepareParamsStack» Thats использует Params до и после того, как подготовить, поэтому у вас есть Params в подготовке().

Смежные вопросы