java - 关于response空值问题

查看:293
本文介绍了java - 关于response空值问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

萌新一位,做SSH实习项目,之前在action方法内执行完会有相应的JS提示框弹出,之前都是写在action里,写完了两个模块后发现,这个JS提示框代码会有重复,想优化一下,所以想单领出来成一个工具类,底层业务实现代码没问题,断点看过后报错原因是response没有值,空的。之前我将这个方法设为静态,用类名.方法名也不行response还是空的(当然)但不知道怎么解决。望解答。

页面上点击a标签,根据href值走入下面action方法中。
action代码

(省略前面代码。。。)
    // 删除用户
    public String deleteUser() throws IOException {
        user.setU_id(u_id);
        int num = (int) usi.execute_delete(user);
        if (num > 0) {
            // Message("删除成功");
            MessageUtf8.Message("删除成功");
            selectALL();// 重新调用查询全部方法
            return "deleteSuccess";
        } else {
            return "deleteError";
        }
    }

工具类

package Utile;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.interceptor.ServletResponseAware;

public class MessageUtf8 implements ServletResponseAware {
    // 获取响应对象
    static HttpServletResponse response = null;

    @Override
    public void setServletResponse(HttpServletResponse response) {
        MessageUtf8.response = response;
    }

    public void setResponse(HttpServletResponse response) {
        MessageUtf8.response = response;
    }

    public HttpServletResponse getResponse() {
        return response;
    }

    // 提示框单领出成方法(设置页面和显示的编码格式)
    public static void Message(String messTitle) throws IOException {
        // this.setServletResponse(this.response);
        // 这里的response为null!!!!
        response.setContentType("text/html;charset=UTF-8");
        response.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();
        out.println("<script>" + "alert('" + messTitle + "')" + "</script>");
        out.flush();
    }
}

页面报错

困扰了好久,我这样做的目的就是想将出提示框方法写好成工具类就能整个项目使用了,不然每个action里都定义就出现重复代码了,很明显写代码不能出现冗余代码。望解答~

解决方案

MessageUtf8.Message("删除成功");

这个方法里的response为null,这是显然的。
因为这个静态方法里使用的response是一个静态全局变量,在MessageUtf8完成初始化之后,它的默认值就是null,并没有给它指向一个具体的对象实例。

建议修改为,这个response通过方法的参数传入。

这篇关于java - 关于response空值问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆