cetia4 1.1文档-2.7 Custom Responses

2.7 Custom Responses
通常情况下,render方法通过string来寻找它的响应视图。前面几节展现的代码都是遵循这样的规定。这发生在大多数情况下,因为这是一个便利的默认行为。但是,有时候定制respose也是需要的。可能现实需要一个不被支持的导航action,或者是应用程序需要一个调用sendRedirect()方法转到特定的资源。或者是render方法可能返回一个非文本的response,例如,动态的image,或者是pdf或者是其他类型的文档。
这种情况框架可以很简单的处理,比其他web frameworks例如struts更简单,只要在render方法中简单的返回null值,并且在代码中增添需要的导航代码。下面的代码展示了这种方法:
public String render( RenderContext context ) throws IOException
{
context.redirectTo( "http://www.acsinet-solutions.com" );
return null;
}

RenderContext实例的redirectTo()方法是标准HttpSevletResponse实例sendRedirect()方法的一个代替。但是redirectTo()方法在portlet环境中的render方法是不能使用的.因为portlet环境中,redirection是不允许的。显然地,不管是传统的web请求还是web service请求,同样的response将会返回,除非使用了下一节介绍的技术。
定制response特性也可以使用在action方法中,这些将在以后介绍。

RenderContext接口也提供了display()方法,在servlet的环境中,这个方法包装了javax.servlet.RequestDispatcher 的forward()方法(在portlet的环境中,它封装了javax.portlet.PortletRequestDispatcher 的include()方法)。下面的代码指示了它的使用方法:

public String render( RenderContext context ) throws IOException
{
context.display( "/index.jsp" );
return null;
}

display() 方法设置了HTTP 头部信息,防止了cache内容,这是web应用的普遍的一个功能。如果不希望使用这个功能,可以使用常规的servlet API 的 forwarding 方法来代替。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值