2013-12-12 74 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。所以,要做到這一點,你應該遵循這些簡單的規則。