`
jiangzhen1984
  • 浏览: 98880 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

解决tapestry中页面跳转(throw new PageRedirectException)乱码问题

    博客分类:
  • java
阅读更多
前几天在论坛发布了 关于 在tapestry 这中执行页面跳转 后乱码的问题,发现好几天都没有回复,诶现在的人好冷淡,俗话说的好啊求人不如求自己 开始查看 tapestry源代码
  然后修改原来的页面跳转源代码,其实就是原来的
那句 throw new PageRedirectException(getErrorPage());
  替换成下面这些采用自己的方式进行跳转其实就是为了修改编码GB2312 或者GBK 其实我测试什么都可以,哪怕随便输入一些字母都可以 但就是 UTF-8不可以不知道为什么,
页面无论才有什么编码都不行。。。晕死
最后查看页面发现,页面的文字都变成
下面的代码在网页里能显示成文字 但查看页面源代码可以发现下面这些问题是 & +# +5位的数字
分钟内系统不允许发送多
条供求信息

这些编码 在网上搜也没有搜到这些编码是什么格式希望有高手可以指点一二

经过再次查看源代码发现 BasePage 类有个方法
   public ContentType getResponseContentType() {
		return new ContentType("text/html");
	}

就是这个方法的问题
在转向的页面覆盖此方法,就可以诶不用在写那么复杂的转向代码了 直接覆盖就可以了
public ContentType getResponseContentType() {
		return new ContentType("text/html;charset=gb2312");
	}



修改后的页面跳转代码
			
public void pageBeginRender(PageEvent event) {
		int counts=getInformationService().getInformationDao().getCountsByType(InformationConstant.QUERY_INFORMATION_COUNTS_IN_TIME, this.getUserSession().getId(),null);
		if(counts>0){
			this.getErrorPage().setErrorMsg(InformationConstant.limitIssueTime+" 分钟内系统不允a许f发送多条供求信息!");
			event.getRequestCycle().activate(getErrorPage());
			try {
				IRequestCycle cycle=event.getRequestCycle();
		        ContentType contentType = getErrorPage().getResponseContentType();
		        String encoding = contentType.getParameter("charset");
		        if (encoding == null)
		        {
		            encoding = cycle.getEngine().getOutputEncoding();

		            contentType.setParameter("charset", "gb2312");
		        }
		        PrintWriter printWriter = event.getRequestCycle().getInfrastructure().getResponse().getPrintWriter(contentType);
		        IMarkupWriter writer = event.getRequestCycle().getInfrastructure().getMarkupWriterSource().newMarkupWriter(printWriter, contentType);
		        cycle.renderPage(writer);
		        writer.close();
				
			} catch (Exception e) {
				e.printStackTrace();
			}			
			//throw new PageRedirectException(getErrorPage());
		}
	}



修改前跳转代码

	
public void pageBeginRender(PageEvent event) {
		int counts=getInformationService().getInformationDao().getCountsByType(InformationConstant.QUERY_INFORMATION_COUNTS_IN_TIME, this.getUserSession().getId(),null);
		if(counts>0){
			this.getErrorPage().setErrorMsg(InformationConstant.limitIssueTime+" 分钟内系统不允许发送多条供求信息!");
			throw new PageRedirectException(getErrorPage());
		}
	}
分享到:
评论

相关推荐

    tapestry官方中文文档

    在Tapestry中,大多数的编程都是声明式的,这意味着开发者可以使用XML或注解来定义页面和组件的行为,而不是编写大量的Java代码。这降低了代码的复杂性,提高了可读性和维护性。 4. **页面和组件生命周期**: ...

    关于Tapestry的一些个人总结

    1. **页面结构**:在Tapestry中,页面是由多个组件组成的。例如,一个登录页面可能包含用户名输入框组件、密码输入框组件以及登录按钮组件。 ```html ``` 2. **组件配置**:每个组件都需要在...

    tapestry官方中文文档及中文字典

    "tapestry中文字典"可能包含对Tapestry框架中的专有名词、API和概念的中文解释,帮助读者更准确地理解和记忆。它可能是以索引形式存在,方便查找和查阅。 通过学习这些文档,开发者可以全面了解Tapestry 4的架构和...

    tapestry页面编辑组件

    在本篇文章中,我们将深入探讨Tapestry的页面编辑组件,以及如何利用这些组件创建交互式的用户界面,包括文本框、单选框、多选框和下拉框。 首先,让我们理解什么是Tapestry页面编辑组件。在Tapestry中,组件是可...

    tapestry5中文文档

    此外,Tapestry 提供详细的异常报告,有助于快速定位和解决问题。 在Tapestry 5 中,开发者可以通过创建CRUD(创建、读取、更新、删除)功能的应用来了解框架的核心概念。这包括页面导航、依赖注入和资源注入、用户...

    Tapestry简单入门.rar_java Tapestry_tapestry

    4. **编写第一个页面**:在Tapestry中,一个页面是由一个或多个组件组成的。你需要定义一个类来表示页面,并在HTML模板中声明组件。 接下来,我们转向"tapestry组件.docx",组件是Tapestry的核心组成部分,它们是可...

    tapestry3开发指南,带tapestry3所有jar包

    3. **错误处理和调试**:Tapestry 3提供了一套强大的错误处理机制,包括详细的错误报告和调试工具,帮助开发者快速定位和解决问题。 **四、使用Tapestry 3的所有jar包** 压缩包中的“tapestry3”包含了运行...

    Tapestry5最新中文入门实例教程

    这种机制不仅使得页面之间的跳转更加简洁明了,而且还可以轻松地管理和组织应用程序的结构。 ##### 3.2 依赖注入(Dependency Injection)与资源注入(Resource Injection) Tapestry 5支持依赖注入和资源注入机制,这...

    Tapestry5最新中文教程

    它还提供了状态管理功能,能有效地处理Web应用中的状态保持问题,特别是在处理用户会话和页面状态时。此外,Tapestry 5 支持RESTful风格的URL,使得URL更具描述性,同时保持与传统HTTP方法的兼容性。其HTML页面可以...

    Tapestry 4 官方文档中版本

    作为Apache项目的一部分,Tapestry 4拥有活跃的社区和丰富的在线资源,包括邮件列表、论坛和代码示例,这些资源可以帮助开发者解决问题并持续学习。 通过深入研究Tapestry 4的官方文档,开发者可以充分利用其强大...

    Tapestry5开发文档手册.doc

    Apache Tapestry 5 是一个基于Java的Web应用开发框架,其核心理念是组件化开发,通过构建组件来创建页面。Tapestry 5 提供了一系列的功能,包括输入验证、本地化/国际化、状态管理和URL映射,使得开发者能更高效地...

    tapestry源码 api等

    1. **Tapestry Core**: 这是Tapestry框架的基础部分,包含了核心组件、服务容器(Tapestry IoC)和页面生命周期管理。通过源码分析,我们可以理解其如何实现页面组件的渲染、事件处理和依赖注入。 2. **Tapestry ...

    Tapestry spindle插件下载

    Tapestry通过组件事件处理和页面导航规则来管理应用程序的流程,这使得开发者能够专注于业务逻辑,而不是繁琐的页面跳转和状态管理。 **Tapestry Spindle插件的功能** 1. **代码提示与补全**:Tapestry Spindle...

    Tapestry通用WEB框架

    10. **错误处理与调试**:Tapestry的错误处理机制可以帮助开发者快速定位问题,提供详细的错误报告和堆栈跟踪。此外,其开发模式下的实时反馈功能让调试变得更加高效。 11. **性能优化**:Tapestry通过缓存策略、...

    tapestry教程资料文档合集

    Tapestry5最新中文教程.doc 作者 Renat Zubairov & Igor Drobiazko译者 沙晓兰 发布于 2008年7月2日 下午9时30分 社区 Java 主题 Web框架 ----------------------------------------- Tapestry5.1实例教程.pdf ...

    Tapestry API

    `PageRenderRequestHandler`和`PageRedirector`接口处理URL到页面的映射和页面间的跳转,确保了URL的语义化和易于理解。 8. **错误处理与验证** Tapestry的异常处理机制允许开发者通过`ErrorHandler`接口定制错误...

    Tapestry教程

    【Tapestry教程】 Tapestry是一个强大的Java web应用程序框架,它融合了MVC(Model-View-Controller)模式和模板技术,为开发者提供了一种高效且优雅的方式来构建动态Web应用。Tapestry的核心理念是将视图逻辑与...

Global site tag (gtag.js) - Google Analytics