PrimeFaces响应编码异常:为何查询与分页返回编码不一致?
问题:PrimeFaces 4 + Weblogic 12c 下希腊字母α显示异常(仅首次加载筛选表单时)
环境与现象
- 使用PrimeFaces 4(无法升级)开发Web应用,生产环境部署在Weblogic 12c,本地测试用Tomcat
- 数据表格某列包含希腊字母α:
- 点击带筛选条件的表单按钮加载表格时,后端返回ISO-8859-15编码的响应,α显示为问号
- 点击分页按钮进入第二页,或从第二页返回第一页时,响应为UTF-8编码,α显示正常
已尝试的解决方案
- 本地Tomcat环境:修改xhtml文件首行编码声明为
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>,问题解决,但该方法在Weblogic 12c上无效 - 尝试过调整请求编码的方案,但无效——请求本身是UTF-8正常的,问题出在响应编码上
相关代码
表格数据来自自定义LazyDataModel类,调试确认筛选按钮和分页按钮触发的逻辑仅页码参数不同,其load方法代码如下:
private List<ListElement> data; @Autowired private transient CamFacade camFacade; public List<ListElement> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, String> filters) { Map<String, Object> params = new HashMap<String, Object>(); params.putAll(filters); params.put("first", first); params.put("pageSize", pageSize); if(sortField == null){ params.put("orderBy", params.get("orderBy")); params.put("order", params.get("order")); }else{ params.put("orderBy", sortField); params.put("order", sortOrder.name()); } int count = camFacade.countByParams(params); if (count > 0 ) { data = camFacade.findByParams(params); } else { data = new ArrayList<ListElement>(); } return data; }
求助
请问针对Weblogic 12c环境下的这个响应编码问题,有什么可行的解决办法?
内容的提问来源于stack exchange,提问作者BraveOtter
相关产品推荐
相关产品推荐

