目前,我有一个带有提交按钮的 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()
来获取type
和value
?您应该能够在 SearchRepairResultActionBean
上使用方法,如下所示:
public void setType(String type) {
this.type = type;
}
public void setValue(String value) {
this.value = value;
}
然后,在调用事件方法之前,Stripes 会注入(inject)必要的值(作为 LifecycleStage.BindingAndValidation 的一部分)。
实际上,就这个问题而言,为什么要将 SearchRepairActionBean
与 SearchRepairResultActionBean
分开?如果“结果”页面需要查看来自提交给 search
事件的表单的数据,那么为什么不直接在 search()
中执行操作SearchRepairActionBean
上的方法,然后对您的 View 执行 ForwardResolution
?这里使用两个 ActionBean 有什么特殊原因吗?
关于parameter-passing - 如何将变量从一个 ActionBean 传递到另一个 ActionBean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7071552/