[英]calling an action method from a jsp
簡單..我需要知道這些列表屬性是否在做相同的工作。
<s:select name="city" label="City" list="cities" listKey="id" listValue="name" />
和
<s:select name="city" label="City" list="%{getCities()}" listKey="id" listValue="name" />
我們可以調用上面的動作方法嗎?如果是,正確的方法是什么?
謝謝,
list="cities"
和list="%{getCities()}"
完全相同。 兩者都在操作類中調用List<City> cities
getter來從valuestack
讀取值。
如果將刪除getter,兩者都將引發錯誤。
1. <s:select name="city" label="City" list="cities[0]" listKey="id" listValue="name" />
被評估為
a. <s:select name="city" label="City" list="%{cities[0]}" listKey="id" listValue="name" />
b. <s:select name="city" label="City" list="%{getCities().get(0)}" listKey="id" listValue="name" />
1,a和b相同,因為%強制執行OGNL
評估。 將查詢堆棧的特定屬性。
OGNL支持集合,因此我們可以使用這三個。
當我們使用特殊需求時,我們稱之為行動。
例如
<s:url id="databaseList" action="fetch-citynames" />
<sd:autocompleter key="search"
href="%{databaseList}" name="searchText" />
在這里, fetch-citynames
返回json
列表。
另請參閱此鏈接
其實我是從這里讀的
主要原因是因為使用%{}
語法強制進行OGNL評估,否則Struts會將其視為字符串文字。
例如,
<s:property value="name" />
將在值堆棧中查找名稱屬性,即通過調用getName()檢索的值。
如果您想強制其使用文字值“ name”,則需要使用%{}
語法-
<s:property value="%{'name'}" />
但是對於<s:select list="" />
它使用OGNL集合構造
下面是OGNL
調用的方法。請參見這里
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.