论坛首页 入门技术论坛

Action中如何获取页面中的pageContext?

浏览 10170 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-02-28  
PageContext pageContext=(PageContext)getServlet().getServletContext();

这样获取老是出错,不明白。

我的意图是想在后台处理后,在前台显示提示信息。
从而写了一个showMessage方法:
public static void showMessage( Writer out, String msg ) throws IOException
    {
        out.write( "<script language=\"javascript\">" );
        out.write( "alert(\"" + msg + "\");" );
        out.write( "</script>" );
    }


Action调用
PageContext pageContext=(PageContext)getServlet().getServletContext();
HtmlUtil.showMessage(pageContext.getOut(), "hello");


问题是pageContext获取不到,请教解决?
如何有别的方法,希望给点意见。

现在pageContext已经获得
JspFactory _jspxFactory = null;
		PageContext pageContext = null;
		_jspxFactory = JspFactory.getDefaultFactory();
		pageContext = _jspxFactory.getPageContext(getServlet(), request, response, "",
				true, 8192, true);
		HtmlUtil.showMessage(pageContext.getOut(), "hello");


但是没有达到预期的效果,脚本没有输出到页面上? 为什么呢?
   发表时间:2007-02-28  
ServletContext和PageContext是两个不同的概念吧……

pageContext是用在jsp中,主要是用到标签类中,PageContext  extends  JspContext  to  provide  useful  context  information  for  when  JSP  technology  is  used  in  a  Servlet  environment 

而ServletContext则是servlet中使用,它只是一个接口。Defines  a  set  of  methods  that  a  servlet  uses  to  communicate  with  its  servlet  container,  for  example,  to  get  the  MIME  type  of  a  file,  dispatch  requests,  or  write  to  a  log  file。 
The  ServletContext  object  is  contained  within  the  ServletConfig  object,  which  the  Web  server  provides  the  servlet  when  the  servlet  is  initialized 
0 请登录后投票
   发表时间:2007-02-28  
你好像根本没明白PageContext 是什么东西吧???

HtmlUtil.showMessage(response.getWriter(), "hello");  

0 请登录后投票
   发表时间:2007-02-28  
可能是我理解错了,我的想法是获得那个page里面的writer,写入脚本。

现在问题是如果我想后台向前台输出一段javascript脚本,如何实现那?
类似asp.net中的Response.write("script");
0 请登录后投票
   发表时间:2007-02-28  
输入脚本不如转向那个包含错误信息脚本的页面,然后再从那个页面转向别的页面
0 请登录后投票
   发表时间:2007-02-28  
恩,实在没办法也只能这样了
0 请登录后投票
   发表时间:2007-02-28  
楼主的意思是在action中判断后发送信息到客户端吧
我是这样在Action中实现的
StringBuilder js = 
		new StringBuilder("<script language='JavaScript' type='text/JavaScript'>")
		.append("alert('请先登录.');")
		.append("window.history.back();")
		.append("</script>");

response.setContentType("text/plain;charset=UTF-8");
response.getWriter().write(js.toString());
return null;


0 请登录后投票
   发表时间:2007-02-28  
页面就是页面,就算只有脚本也是页面,我还是推崇转向页面的方法。可以把message和转向地址写到request里面,然后在那个script页面上判断一下
0 请登录后投票
   发表时间:2007-02-28  
刑天战士 写道
页面就是页面,就算只有脚本也是页面,我还是推崇转向页面的方法。可以把message和转向地址写到request里面,然后在那个script页面上判断一下


用ajax就好办了撒,不用ajax转向页面可能需要做一些“多余”的初始化操作,用了就干净了,该怎么提示就怎么提示,呵呵
0 请登录后投票
   发表时间:2007-02-28  
谢谢各位支持
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics