parameter-passing - 如何将变量从一个 ActionBean 传递到另一个 ActionBean?

标签 parameter-passing stripes

目前,我有一个带有提交按钮的 Stripes 表单,该按钮绑定(bind)到以下 ActionBean 的“搜索”方法:

public class SearchRepairActionBean extends BaseActionBean {
  private String searchType;
  private String searchValue;

  @DefaultHandler   
  public Resolution defaultHandler(){
    return null;
  }

  @HandlesEvent("search")
  public Resolution search(){   
    return new ForwardResolution("SearchRepairResult.action").addParameter("searchType", searchType).addParameter("searchValue", searchValue);;
  }

  public String getSearchType() {
    return searchType;
  }

  public void setSearchType(String searchType) {
    this.searchType = searchType;
  }

  public String getSearchValue() {
    return searchValue;
  }

  public void setSearchValue(String searchValue) {
    this.searchValue = searchValue;
  }
}

SearchRepairResultActionBean 尝试这样解决它:

public class SearchRepairResultActionBean extends BaseActionBean {
private String searchType;
private String searchValue;

@DefaultHandler 
public Resolution defaultHandler(){
    return new ForwardResolution("/jsp/searchRepairResult.jsp");
}

@HandlesEvent("SearchRepairResult")
public Resolution SearchRepairResult(){
    System.out.println(searchType);
    System.out.println(searchValue);    
    }
public String getSearchType() {
    return searchType;
}

public void setSearchType(String searchType) {
    this.searchType = searchType;
}

public String getSearchValue() {
    return searchValue;
}

public void setSearchValue(String searchValue) {
    this.searchValue = searchValue;
}
}

问题是当我尝试打印“searchType”和“searchValue”时 - 它们返回 null。我是否错误地传递了参数?最好的方法是什么?

最佳答案

为什么要通过调用getContext().getRequest().getParameter()来获取typevalue?您应该能够在 SearchRepairResultActionBean 上使用方法,如下所示:

public void setType(String type) {
    this.type = type;
}

public void setValue(String value) {
    this.value = value;
}

然后,在调用事件方法之前,Stripes 会注入(inject)必要的值(作为 LifecycleStage.BindingAndValidation 的一部分)。

实际上,就这个问题而言,为什么要将 SearchRepairActionBeanSearchRepairResultActionBean 分开?如果“结果”页面需要查看来自提交给 search 事件的表单的数据,那么为什么不直接在 search() 中执行操作SearchRepairActionBean 上的方法,然后对您的 View 执行 ForwardResolution?这里使用两个 ActionBean 有什么特殊原因吗?

关于parameter-passing - 如何将变量从一个 ActionBean 传递到另一个 ActionBean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7071552/

相关文章:

java - 在 Java 中传递具有参数定义行为的函数

java - 长长的参数列表

hibernate - 自动在 JPA 实体中设置 createdBy 和 updatedBy

javascript - 使用 Stripes、Javascript 和 Ajax

javascript - 如何从 Stripes ActionBean 获取 javascript 的返回值?

java - 条纹编码工作很奇怪

powershell - 将单个以空格分隔的字符串作为多个参数传递

neural-network - 将网络输出作为另一个网络参数

parameter-passing - 拷入拷出参数(值-结果参数传递)