java - jsp 上的 Struts 2 Action 响应

标签 java jquery ajax struts2 action

我想在 jsp 页面上获取 Action 的 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 代码作为响应...谢谢!

最佳答案

  1. 您的变量必须位于类级别,并带有 Getter;
  2. 应该是驼峰命名法(returnCode而不是return_code),并且可能是一个整数,因为它包含一个数字;
  3. 不要在响应中写任何内容,Struts 会为您做这件事;这是一个操作,而不是 servlet;
  4. 永远不要吞下异常;

    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";
        }
    }
    
  5. 在 struts.xml 中,将您的 "success" 结果映射到仅包含打印输出值的 JSP:

    <%@ page contentType="text/html; charset=UTF-8"%>
    <%@ taglib prefix="s" uri="struts-tags.tld"%>    
    <s:property value="returnCode" />
    

    那么返回的 JSP 将是单个值。但这是不好的做法,并且很容易导致错误(例如额外的空格)。然后改变你的方法......

  6. 使用Struts2 JSON pluginreturnCode 设置为 root 对象(记住将 dataTypehtml 更改为 json )

关于java - jsp 上的 Struts 2 Action 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22987082/

相关文章:

java - Java中的URLConnection后如何登录网站?

java - 避免 JNI C 与 Java 之间的内存泄漏

java - Swing HTMLDocument 不包含所有 HTML 元素?

jquery - 一起使用 JQuery-Mobile/Phonegap 的正确方法?

javascript - 持久的上游 cometd 式连接

javascript - JSON 到 HTML - 我被正式难住了

java - 如何使一组 jbuttons 在 java 中不可见

javascript - 有没有办法在没有任何事件的情况下运行 jquery.live 函数

javascript - 无法使用jquery从外部url获取json

php - 带宽与数据库查询