有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

jsp上的java Struts 2动作响应

我想在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代码作为响应。。。谢谢


共 (1) 个答案

  1. # 1 楼答案

    1. 你的变量必须达到班级水平,并且有一个Getter
    2. 应该是camelCase(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 plugin设置returnCode作为root对象(记住将dataTypehtml更改为json