1. I have "actionOne"

public class ActionOne extends ActionSupport implements ServletRequestAware{
  protected HttpServletRequest request;

  private SearchParameter searchData=new SearchParameter();//My complex
object

  public String execute() throws Exception{
     //fill searchData with parameters. Many many parameters.....
      return this.SUCCESS;
  }

  // this is for ability to copy object searchData to next chain action 
  public SearchParameter getSearchData() {
    return searchData;
  }

  public void setServletRequest(HttpServletRequest httpServletRequest) {
    request = httpServletRequest; 
  }
  
}

2.
  <package name="searchEngine" namespace="/s2examples"
extends="struts-default">
    <action name="*search" class="s2.action.ActionOne" method="{1}"  >
      <result  name="success" type="chain" >doSearch</result><!--to search
-->
      <result  name="input" >search.jsp</result> <!--input -->
    </action>
    <!-- специально сделана отдельно, чтобы на нее наложить execAndWait -->
    <action name="doSearch" class="s2.action.ActionTwo"  >
      <interceptor-ref name="completeStack"/>
      <interceptor-ref name="execAndWait">
        2000
        500 
      </interceptor-ref>
      <result  name="wait">wait_search.jsp</result>
      <result  name="success" type="redirect"  >search_result.jsp</result>
    </action>
  </package>

3.
public class ActionTwo  extends ActionSupport implements ServletRequestAware
{
  protected HttpServletRequest request;
  private SearchParameter searchData;
  private HttpSession sess;
  public String execute() throws Exception{
     sess = request.getSession();
     boolean v =(searchData!=null);// ok. we recieve a copy of searchData
from previos action
     try {  Thread.currentThread().sleep(6*1000);  } catch
(InterruptedException ex) {}
     sess = request.getSession(); // return null object!!! why ?
     return this.SUCCESS;
  }
  /*this work and  searchData object has been copied from previos action */
  public void setSearchData(SearchParameter searchData) {
    this.searchData = searchData;
  }
}

The desired behaviour:

public class ActionTwo  extends ActionSupport implements ServletRequestAware
{
  protected HttpServletRequest request;
  private HttpSession sess;
  public String execute() throws Exception{
     SearchParameter searchData=null;
     try {  Thread.currentThread().sleep(6*1000);  } catch
(InterruptedException ex) {}
     //!!!!    
      ActionOne prev=null;
      prev=(ActionOne)getPreviousAction();
      searchData=prev.getSearchData();
     //!!!!
     sess = request.getSession(); // return null object!!! why ?
     return this.SUCCESS;
  }
 
}
===============================================================
for simplisity simplicity searchData may be a simple Object().
I need an ability to make : prev=(ActionOne)getPreviousAction();


Laurie Harper wrote:
> 
> Igor Vlasov wrote:
>> Copying of properties with ChainingInterceptor  working GOOD.
> 
> OK, good that something is working well. What's not clear is what 
> *isn't* working...
> 
> Can you post code that works (as a semplar), and then a sample of the 
> code you'd like to write instead (to illustrate what you're looking for)?
> 
> L.
> 
>>>> I have action "one" and it calls action "two" throw:
>>>>  <result  name="success" type="chain" >two</result>
>>>>
>>>>
>>>> I can use ChainingInterceptor to copy properties of "one" action to
>>>> "two"
>>>> action.
>>>>
>>>> I get behaviour : one.param->two.param.
>>>> But the property "param" must be in  javaBeans specification(have
>>>> setter
>>>> and
>>>> getter method for each property).
>>>>
>>>> Can i MANUALLY get object for "one" action or exact "one.property" from
>>>> :"execute()" method of action "two"?
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/-S2--Manually-obtain-previous-action-parameters-after-action-%22chaining%22--tf4601173.html#a13152366
Sent from the Struts - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to