respond是空的_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("");

out.flush();

}

}

页面报错

bVTUeg?w=800&h=408

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

解决方案

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

这个方法里的response为null,这是显然的。

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

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

992918a26da18f46479e2b9a26bece7f.png

扫一扫关注IT屋

微信公众号搜索 “ IT屋 ” ,选择关注与百万开发者在一起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值