2013-12-12 54 views
1

我打算使用like表达式从数据库中搜索数据。我的方法是这样的:如何将参数化方法传递给Struts 2动作的方法属性?

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

我的目的是,当我输入一个查询字符串到qString变量,我需要在列表中的数据。我正在使用Struts2来做这件事。我需要将此方法映射到struts操作的方法属性。如

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

这可能吗?如果这是我该怎么做?

+0

你可以作为正是你想要的多一点清楚了吗?或者可能是我无法理解你的问题 –

+0

在我的索引页面有一个搜索框。它以自动完成的方式工作。当我按下回车键时,我需要查看数据库中的所有数据(我使用的是表达式)。 – begginerAll

+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> 

另一种方法除了它,你需要知道你映射到该动作的类应该是一个合格的java bean它有一个默认的无参数的构造函数或没有按根本没有构造函数(在这种情况下使用隐式默认构造函数)。当您向由此操作配置映射的操作发出请求时,Struts将实例化该bean。所以,要做到这一点,你应该遵循这些简单的规则。