我正在使用 Strut2 运行 Glassfish Web 服务器,我想从操作类中提取 json 数据以获取页面而无需刷新页面。我的意思是,当用户更改设置时,我想自动显示更新的数据而不刷新页面。
对 Strut2 操作类进行 Ajax 调用似乎是我的解决方案,但我的所有 Google 搜索结果都是针对需要刷新页面的情况。
动作类:
...
@Override
public String execute() throws Exception {
result = "\"{\"age\":100,\"name\":\"dude\"}";
return SUCCESS;
}
...
strut.xml:
<package name="default" namespace="/" extends="json-default">
<action name="getData" class="action.getData" method="execute">
<result type="json" />
</action>
</package>
阿贾克斯调用:
jQuery.ajax(
{
type: 'POST',
url: '/proj/getData',
data: {id: $('#id').val()},
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function(data){
alert(data.result);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
alert('Error ' + textStatus);
alert(errorThrown);
alert(XMLHttpRequest.responseText);
}
});
上面的代码在动作类中正确调用了正确的函数,但有两个问题。
- 我不确定如何在服务器端的 ajax 调用的数据部分中提取 id 数据集
返回时我在服务器端收到以下错误。
WARNING: StandardWrapperValve[default]: PWC1406: Servlet.service() for servlet default threw exception java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils at org.apache.struts2.json.SerializationParams.<init>(SerializationParams.java:57) at org.apache.struts2.json.JSONResult.writeToResponse(JSONResult.java:207) at org.apache.struts2.json.JSONResult.execute(JSONResult.java:171)
我对 strut2 很陌生,我知道我用 ajax 和 struts 做过类似的事情,但我似乎无法弄清楚这一点,所以如果你能提供帮助,我将不胜感激。