gpt4 book ai didi

java - 在不刷新页面的情况下对 Struts2 操作进行 ajax 调用

转载 作者:行者123 更新时间:2023-11-30 09:28:21 24 4
gpt4 key购买 nike

我正在使用 Strut2 运行 Glassfish Web 服务器,我想从页面的操作类中提取 json 数据,而不需要刷新页面。我的意思是,当用户更改设置时,我希望在不刷新页面的情况下自动显示更新后的数据。

对 Strut2 操作类进行 Ajax 调用似乎是我的解决方案,但我的所有 Google 搜索结果都是针对需要刷新页面的情况。

Action 类:

...
@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>

ajax调用:

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);
}
});

以上代码正确调用了 Action 类中的正确函数,但存在两个问题。

  1. 我不确定如何在服务器端的 ajax 调用的数据部分中提取 id 数据集
  2. 返回时服务器端出现以下错误。

    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 做过类似的事情,但我似乎无法弄清楚这一点,所以如果你能提供帮助,我们将不胜感激。

最佳答案

您需要将apache common lang 包添加到您的类路径,或WEB-INF/Lib。你可以在这里得到它 http://commons.apache.org/lang/或者如果您使用的是 Maven,则将其添加为 Maven 依赖项。

第二件事是你可以访问 id 作为 url 的参数

String id= request.getParameter("id"); 要获取请求对象,Action 类必须实现 servletrequestaware。

public class BaseAction extends ActionSupport implements ServletRequestAware {

protected HttpServletRequest request = null;


@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}

@Override
public String execute() throws Exception {
String id= request.getParameter("id");
result = "\"{\"age\":100,\"name\":\"dude\"}";

return SUCCESS;
}

}

您也可以将 id 参数作为 GET 请求传递。

jQuery.ajax(
{
type: 'GET',
url: '/proj/getData?id='+$('#id').val(),
//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);
}
});

关于java - 在不刷新页面的情况下对 Struts2 操作进行 ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14078429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com