2013-07-13 40 views
2

我必須從我的操作類發送Bean類的對象回到JSP。我在我的Action類中實例化了Bean類,並在Action類中設置了一些值。如何在Struts2中使用Bean將操作類中的對象傳遞給JSP?

ElasticitiesVariable elasticitiesVariable = new ElasticitiesVariable(); 
elasticitiesVariable.setAuto_Auto_cost_peak("-0.047"); 
elasticitiesVariable.setAuto_Ride_cost_peak("0.000"); 
elasticitiesVariable.setAuto_Van_cost_peak("0.000"); 
elasticitiesVariable.setAuto_Transit_cost_peak("0.050"); 
elasticitiesVariable.setAuto_Bike_cost_peak("0.000"); 

並在我的JSP我也聲明瞭bean類。

<s:bean name="org.apache.struts.register.model.ElasticitiesVariable" var="elasticitiesBean" /> 
<td class="edit_area"> 
    <s:property value="#elasticitiesBean.auto_Auto_cost_peak" /></td> 

在bean類中我聲明瞭變量private與public getter和setter。 但JSP中的值爲null。 調試後我發現在操作類中沒有問題。但是當命令轉到bean類時,值變爲null

回答

1

您第一次在動作中實例化bean,第二次在JSP中實例化。它與您在操作中填充的bean不同,並且不包含值。如果你想從第一個bean獲得值,那麼你應該爲包含bean實例的變量創建mutators。你還應該創建mutators來訪問該bean的屬性。在JSP中,您可以訪問第一個bean,因爲操作實例位於valueStacktop上。只需使用

<s:property value="elasticitiesBean.auto_Auto_cost_peak" /> 

注意,沒有# OGNL不會再搜索其他變量,它會直視valueStack。但是不要在bean標籤內部執行此操作,因爲新的(第二個)實例會被推送到valueStack,並且搜索從上到下執行,因此它可以匹配bean的屬性。只需刪除bean標記。

+0

謝謝你的詳細解答。我計算出來並解決了它。忘了把它發佈在這裏.... –

相關問題