在 fmt:formatNumber 中获取动态模式
Get dynamic pattern in fmt:formatNumber
我有以下代码:
我想用小数的数字计算格式数字的模式。
使用 jslt 呼叫 :
<td class="TD_Suivi"><fmt:formatNumber type="number" pattern="${getNumberFormatPatern(4)}" value="${toto.montant}" /> </td>
外部JavaScript函数:
function getNumberFormatPatern(nbDecimal) {
"##,##0.00"
var numberFormatPattern1="##,";
var numberFormatPattern2 ="0.";
for (i = 0; i < nbDecimal; i++)
{
numberFormatPattern1+="#";
numberFormatPattern2+="0";
}
return numberFormatPattern1+numberFormatPattern2
调用我的 JavaScript 函数:
<script language="JavaScript"
src="<util:WebPath/>/js/commun/jsControle.js"></script>
我有以下错误:
The function getNumberFormatPatern must be used with a prefix when a default namespace is not specified
不能在表达式中调用 JavaScript 函数。在客户端开始处理页面上的 JavaScript 之前,容器将使用表达式生成内容,因此容器无法解析表达式以按原样调用函数。
您有两种选择:
- 将该逻辑重构到后端
例如,如果您使用的是 servlet,则需要可以访问此方法:
private String getNumberFormatPattern(int nbDecimal) {
String numberFormatPattern1 = "##,";
String numberFormatPattern2 = "0.";
for (int i = 0; i < nbDecimal; i++) {
numberFormatPattern1 += "#";
numberFormatPattern2 += "0";
}
return numberFormatPattern1 + numberFormatPattern2;
}
然后,您可以通过将此值与请求相关联来使表达式可用于表达式:
request.setAttribute("numberFormatPattern", getNumberFormatPattern(4));
并在表达式中这样引用它:
<fmt:formatNumber type="number" pattern="${ numberFormatPattern }" value="${ toto.montant }" />
- 将该逻辑重构为自定义函数
以下是有关注册和使用自定义函数的简单指南。你只需要用你的getNumberFormatPattern()
函数替换charAt函数。
相关文章:
- 如何在OpenLayers中获取动态绘制的多边形的坐标
- 无法使用document.getElementById获取动态生成的单元格的值
- 如何在asp.net中获取动态创建的文本框web控件的值
- 正在获取动态生成的ID
- 滚动到底部后获取动态加载的HTML
- 如何使用jquery获取动态添加的输入框的输入值
- 通过JQuery获取动态内容的ID
- 获取动态创建的输入元素的输入值
- 获取动态加载到页面中的图像
- 使用javascript/jquery从网页中获取动态更改的数据
- 使用javascript获取动态创建的文本框的值
- 获取动态值 tr jquery 的每个 td 值
- 如何获取动态添加图像的宽度和高度
- 如何获取动态脚本 ID
- 获取动态行数据值以使用 JavaScript 预填充表单
- 从 URL - AngularJS 获取动态查询字符串参数
- 获取动态插入的当前 js 文件路径
- 获取动态背景颜色,使用 LESS 应用于单独的元素
- 如何获取动态添加到
内的表行的文本框值 - 无法获取动态添加的文本区域的外部 HTML/值