我有一个抽象类,它看起来像一个适当的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