使用 JSON 不必将 JSON 发送到 Struts。即使可以将其配置为接受 JSON 内容类型,它也无济于事。您可以使用传入的数据对 Struts 进行普通请求。如果是 Ajax 调用,那么您可以使用类似
$.ajax({
url: "<s:url namespace="/aaa" action="bbb"/>",
data : {key: value},
dataType:"json",
success: function(json){
$.each(json, function( index, value ) {
alert( index + ": " + value );
});
}
});
value 应该是通过 params 拦截器和 OGNL 填充的操作属性。 success函数中返回的json应该是JSON对象,可以不解析直接使用。
您需要为属性key提供动作配置和设置器。
struts.xml:
<package name="aaa" namespace="/aaa" extends="json-default">
<action name="bbb" class="com.bbb.Bbb" method="ccc">
<result type="json">
<param name="root">
</result>
</action>
</package>
此配置使用包"json-default" 中的"json" 结果类型,如果您使用JSON Plugin,则可用。
动作类:
public class Bbb extends ActionSupport {
private String key;
//setter
private List<String> value = new ArrayList<>();
//getter
public String ccc(){
value.add("Something");
return SUCCESS;
}
}
当您返回 SUCCESS 结果时,Struts 将通过在序列化期间调用其 getter 方法,将 value 属性(由 root 参数定义)序列化为 JSON 结果。
如果您需要将 JSON 发送到 Struts 操作,您应该阅读this 答案。