我有一個抽象類,它看起來像一個適當的getter和setter私人性質(左守到後排序)如下:使用Struts2的JSON插件
public abstract class CityDistanceAwareAction extends BaseAction implements Preparable {
private CityDistanceRepository cityDistanceRepository;
private CityRepository cityRepository;
private String cityA;
private String cityB;
private CityDistance cityDistance;
public void prepare() {
if (StringUtils.isNotBlank(cityA) && StringUtils.isNotBlank(cityB)) {
CityPair cityPair = new CityPair(getCityRepository().findByName(cityA), getCityRepository().findByName(cityB));
setCityDistance(getCityDistanceRepository().load(cityPair));
}
}
}
然後,我有一個非常簡單的類看起來像下面這樣:
public class SearchCityDistanceAjaxAction extends CityDistanceAwareAction {
@Override
public String perform() {
if (getCityDistance() == null) {
addActionError("No city distance found for that pair");
return ERROR;
}
return SUCCESS;
}
}
這個想法是我可以發送一個字符串cityA和String cityB。做我的查找,並簡單地通過AJAX返回cityDistance
對象。
當我把我的struts.xml
行動起來如下:
<action name="searchCityDistance" class="searchCityDistanceAjaxAction">
<result type="json">
<param name="includeProperties">
cityDistance.*
</param>
</result>
<result name="error" type="json">
<param name="ignoreHierarchy">false</param>
<param name="includeProperties">
actionErrors.*
</param>
</result>
</action>
我得到以下回報:
(CommonsLogger.java:68) - 添加包括屬性表達式: cityDistance *。 (CommonsLogger.java:68) - [JSON] {}
但我期望得到cityDistance.*
對象返回pr在摘要CityDistanceAwareAction
中受到吸氣者的歡迎。
有趣的是,如果我添加SearchCityDistanceAjaxAction
對象像下面的一個特殊的getter:
public CityDistance getAjaxCityDistance() {
return getCityDistance();
}
,改變支柱文件到:
<result type="json">
<param name="includeProperties">
ajaxCityDistance.*
</param>
</result>
它給我什麼,我從我的第一預期嘗試。
(CommonsLogger.java:68) - 添加包括屬性表達式: ajaxCityDistance *(CommonsLogger.java:68) - [JSON] { 「ajaxCityDistance」:{ 「城市對」:{ 「cityA」: {「cityName」:「美國 Falls」,「id」:68},「cityB」:{「cityName」:「Ririe」,「id」:119}},「distance」:85}}
這將是理想的從我的SearchCityDistanceAjaxAction
中刪除吸氣劑,因爲吸氣劑已經在母體中提供。有什麼我在這裏失蹤或這是它應該的功能?
在此先感謝。
你在'CityDistanceAwareAction'類中有公共'getCityDistance()'方法嗎? –
是的,'CityDistanceAwareAction'中有一個'getCityDistance()'方法。 – buzzsawddog