0
回答
关于struts.xml中配置通过${}获取值栈的值编码问题
滴滴云服务器,限时包月0.9元,为开发者而生>>>   

之前通过struts2做一个文件下载的功能,我想下载时的默认文件名是中文,

action代码如下:

private String fileName;
private InputStream fileStream;

public String export()
{
    fileName = "全国";
    fileStream = new FileInputSream(...);
    return "export";
}

fileName,fileStream的setter&getter,省略

struts配置文件代码:

 

<action name,classs省略>
  <result>
    <param name="contentDisposition">
       attachment;filename="${fileName}.csv"
    </param>
    <param...其他参数省略
  </result>
</action>

 这样导出的文件名会有乱码,我调试看了值栈里的值没有乱码,最后看了struts的源码,里面对通过${fileName}从值栈中的值做了URLEncoder.encode(parsedValue.toString(), "UTF-8")编码处理,问题应该是出在这,通过各种尝试我在action中也做了一次相同处理,action代码如下:

private String fileName;
private InputStream fileStream;

public String export()
{
    fileName = URLEncoder.encode("全国", "UTF-8");
    fileStream = new FileInputSream(...);
    return "export";
}

fileName,fileStream的setter&getter,省略

 这样就OK了,导出文件时默认的文件名就是“全国”啦,想请各位大虾帮我解释下,谢谢!

 

 

 

举报
囚兔
发帖于6年前 0回/1K+阅
顶部