我们有一个文件上传功能。最大文件上传大小为3mb,我们正在组件级别验证文件大小。
在p:fileUpload
中使用sizeLimit="3000000"
显示如下错误信息
允许上传的最大文件大小为3mb: XXX.pdf 7.5 MB
但是我的要求是像
这样用两个小数点显示文件大小允许上传的最大文件大小为3mb: XXX.pdf 7.53 MB
有可能吗?
我尝试了messageTemplate
和jQuery,但无法做到这一点。
一种解决方案是在PrimeFaces js中使用原型重写大小计算方法。
代码应该是这样的:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://java.sun.com/jstl/core">
<h:head>
</h:head>
<h:body>
<script>
PrimeFaces.widget.FileUpload.prototype.formatSize = function(a) {
if (a === undefined) {
return '';
}
if (a === 0) {
return 'N/A';
}
var b = parseInt(Math.floor(Math.log(a) / Math.log(1024)));
if (b === 0) {
return a + ' ' + this.sizes[b];
} else {
return (a / Math.pow(1024, b)).toFixed(2) + ' ' + this.sizes[b];
}
};
</script>
<h:form id="frmClientDetails">
<p:fileUpload value="#{fileUploadView.file}" mode="advanced"
sizeLimit="100" invalidSizeMessage="Your error message" />
</h:form>
</h:body>
</html>
这样做,您将在错误消息和详细信息中设置两个小数(我在PF 6.2 js中添加的唯一区别)。