1
我有一段时间试图在实现会话的Struts2包中使JSON调用工作。每当我进行调用时,都会调用适当的执行方法,但不会调用任何getter方法。因此,没有数据被返回到页面。这里是我的struts.xmlJSON调用不会与会话包一起工作
<package name="agreements" extends="default" namespace="/agreements">
...
</package>
<package name="new-wizard" extends="agreements, json-default" namespace="/new-wizard">
<interceptors>
<interceptor-stack name="agreementsStack">
<interceptor-ref name="scope">
<param name="session">agreements, financialReportFirstReport, performanceReportFirstReport, tbvId, hasModification, tbvLoaded, subContractorGoals</param>
<param name="key">partialAgreements</param>
</interceptor-ref>
<interceptor-ref name="paramsPrepareParamsStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="agreementsStack" />
...
<action name="subContractorGoals" class="com.mycompany.webapp.action.AgreementsSubContractorWizardAction" method="subContractorGoals">
<result type="json">
<param name="includeProperties">subContractorGoals.*</param>
</result>
</action>
</package>
这是我的javascript:
var goals = null;
$.ajax({
async: false,
type:'GET',
dataType:'json',
url:"../new-wizard/subContractorGoals",
success:function(data) {
console.log("dataStringify = " + JSON.stringify(data));
goals = data.subContractorGoals;
}
});
输出到我的控制台始终是相同的 - {}。我回来了一个对象,但它是空的。我感到困惑的是,如果我采取完全相同的行动并将其放入另一个包中,它就会起作用。
<package name="json" extends="default, json-default" namespace="/json">
<action name="subContractorGoals" class="com.mycompany.webapp.action.AgreementsSubContractorWizardAction" method="subContractorGoals">
<result type="json">
<param name="includeProperties">subContractorGoals.*</param>
</result>
</action>
</package>
的Java:
@SkipValidation
public String subContractorGoals()
{
try
{
this.subContractorGoals = new HashMap<String, Double>();
this.subContractorGoals.put("test", 1.0);
return SUCCESS;
}
catch (Exception e)
{
e.printStackTrace();
}
return ERROR;
}
,并从以前的javascript我的结果(包名称改为当然/json
)是{"subContractorGoals":{"test":"1.0"}}
我真的不知所措到发生了什么。