如何将参数化方法传递给Struts 2动作的方法属性?

时间:2013-12-12 16:08:28

标签: java configuration struts2 ognl

我将使用like表达式从数据库中搜索数据。我的方法如下:

public List<Item> getData(String qString){
   return itemJpa.getSuggestedData(qString);
}

我的目的是当我向qString变量输入查询字符串时,我需要获取列表中的数据。我是用Struts2做的。我需要将此方法映射到struts action的method属性。如

<action name="DummyDB" class="com.shopping.op.welcome.DummyDB" method="**In Here**"></action> 

有可能吗?如果是这样我怎么办?

1 个答案:

答案 0 :(得分:0)

您无法将操作映射到签名中包含参数的方法,也不能返回String以外的结果。你能做的是创建另一种方法,例如doData()

private List<Item> data;
//getter and setter

public String doData() {
  data = getData(qString);
  ...
  return Action.SUCCESS;
}

<action name="DummyDB" class="com.shopping.op.welcome.DummyDB" method="doData">
 <result>/jsp/whateveryoudo.jsp</result>
</action>

除此之外,你需要知道映射到action的类应该是一个合格的java bean,它有一个默认的no-arg构造函数或根本没有构造函数(在这种情况下隐式的默认构造函数是用过的)。当您对此操作配置映射的操作发出请求时,Struts将实例化该bean。所以,要做到这一点,你应该遵循这些简单的规则。