java - 尝试在 jQuery + Struts2 中执行 ajax getJson 或 post 操作时,Tomcat7 出现 500 内部服务器错误

标签 java jquery ajax tomcat struts2

[已解决] 操作名称原来是区分大小写的

我想向服务器发出 ajax 请求以获得 JSON。我正在使用以这种方式配置的 struts2 包

<package name="it.polito.ai.e3" namespace=""
    extends="struts-default,json-default">
    <action name="getDay" class="it.polito.ai.e3.GetDayAction" >
        <result name="success" type="json" />
        <result name="error" type="json" />
    </action>
</package>

GetDayAction 类是

package it.polito.ai.e3;

import java.util.Date;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class GetDayAction extends ActionSupport
{
private String startDate;

public String execute()
{
    try
    {
        System.out.println("Ciao");
        System.out.println(startDate);
    }
    catch (Exception e)
    {
        e.printStackTrace();
        return Action.ERROR;
    }

    return Action.SUCCESS;
}

public String getStartDate()
{
    return startDate;
}

public void setStartDate(String startDate)
{
    this.startDate = startDate;
}

}

jQuery post block 是

$(function() {
    $.post('getday.action', document.getElementById('startDate').innerHTML,
        function(data) {

        });  
});

如果获取 jQuery block 是

$(function() {
    $.getJSON('getday.action', document.getElementById('startDate').innerHTML,
        function(data) {

        });  
});

document.getElementById('startDate').innerHTML 获取字符串格式的日期。

当它通过 ajax 执行 get 或 post 时,Tomcat 给我 500 内部服务器错误和这个堆栈跟踪

java.lang.NullPointerException
org.apache.struts2.impl.StrutsActionProxy.getErrorMessage(StrutsActionProxy.java:69)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:500)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434)

Tomcat7 控制台不显示任何内容,既不显示 System.out.println() 也不显示其他消息。

我不知道我做错了什么。 谢谢

最佳答案

$.post()/$.getJSON()函数的data参数要么是一个对象,要么是一个URL参数字符串;您不能只向它传递一个值并期望它知道如何处理它。所以,要么:

$.getJSON('getday.action', { yourparam : document.getElementById('startDate').innerHTML},
    function(data) {

    });  

$.getJSON('getday.action', 'yourparam=' + document.getElementById('startDate').innerHTML},
    function(data) {

    });  

关于java - 尝试在 jQuery + Struts2 中执行 ajax getJson 或 post 操作时,Tomcat7 出现 500 内部服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10451269/

相关文章:

Java - 循环遍历 JSONArray

javascript - jQuery 选择器是快照还是实时更新

javascript - 将 PHP 中的 JSON 数据拆分为 JavaScript 中的三个数组

javascript - 如何将DOM树中的div元素一个一个移除?

java - Android 每隔 N 个字符为字符串添加分隔符?

java - 从 jdk 8 迁移到 jdk 11 cxf 生成源未知导入

java - 如何替换矩阵中的零?

javascript - 挑战: Fix a Canvas plugin to work with CORS?

javascript - 如何创建具有多值的选择

javascript - 我可以使用 html 字符串创建 jsPDF 文件的一部分吗?