然后修改原来的页面跳转源代码,其实就是原来的
那句 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()); } }