Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jsp上的Struts 2动作响应_Java_Jquery_Ajax_Struts2_Action - Fatal编程技术网

Java jsp上的Struts 2动作响应

Java jsp上的Struts 2动作响应,java,jquery,ajax,struts2,action,Java,Jquery,Ajax,Struts2,Action,我想在jsp页面上获取操作的HTTPServletResponse,但我不知道如何 我对jsp的ajax调用: jQuery.ajax({ url : 'actionURL', type: "POST", data : {input: "example"}, dataType: "html", success: function(response) { alert(response); if (response == 1) { jQuery("#message").html("done!");

我想在jsp页面上获取操作的HTTPServletResponse,但我不知道如何

我对jsp的ajax调用:

jQuery.ajax({
url : 'actionURL',
type: "POST",
data : {input: "example"},
dataType: "html",
success: function(response) {
alert(response);
if (response == 1) {
jQuery("#message").html("done!");
}
}
});
我的行动课:

public class MyAction implements ServletResponseAware {

public final String execute() throws IOException {

        String return_code = "1";

        try {

            something...

        } catch (Exception e) {
            return_code = "0";
        }

        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().write(return_code);

        return "success";
    }
}
如何仅访问jsp上的return_code变量?因为现在在脚本中警报整个页面的HTML代码作为响应。。。谢谢

  • 您的变量必须处于类级别,并具有Getter
  • 它应该是camelCase(
    returnCode
    而不是
    return\u code
    ),并且可能是一个整数,因为它包含一个数字
  • 不要在响应中写任何东西,Struts会为您做的;这是一个动作,而不是servlet
  • 不要接受例外

    public class MyAction implements ServletResponseAware {
    
        private Integer returnCode;
    
        public Integer getReturnCode(){
            return returnCode;
        }
    
        public final String execute() throws IOException {    
            try {
                /* do something... */
                returnCode = 1;
            } catch (Exception e) {
                e.printStackTrace();
                returnCode = 0;
            }    
            return "success";
        }
    }
    
  • 在struts.xml中,将
    “success”
    结果映射到只包含打印值的JSP:

    <%@ page contentType="text/html; charset=UTF-8"%>
    <%@ taglib prefix="s" uri="struts-tags.tld"%>    
    <s:property value="returnCode" />
    
    
    
    然后返回的JSP将是单个值。但这是一种不好的做法,很容易导致错误(例如,额外的空格)。然后改变你的方法,然后

  • 使用设置
    returnCode
    作为
    root
    对象(记住将
    dataType
    html
    更改为
    json


  • 使用
    struts2 json插件
    返回json响应。非常感谢!抱歉,这只是我代码中的一个片段……我将ajax脚本修改为:……数据类型:“json”,。。。以及struts.xml:returnCode,但现在它抛出的原因是:java.lang.IllegalArgumentException:application/json;charset=UTF-8与[text/html]相比无效。请将此代码和完整的异常stacktrace添加到您的问题中,以便我们能够帮助您。顺便说一句,你走了这条路真是太好了。