gpt4 book ai didi

来自字符串的 JSF 舍入值

转载 作者:行者123 更新时间:2023-12-02 02:11:53 26 4
gpt4 key购买 nike

我有一个 JSF 1.2 View ,它是一种报告生成器。用户可以选择一个查询,配置一些值,然后请求数据库并收集数据。之后可以在数据表中查看数据,最后导出到 Excel。到目前为止工作正常。

根据查询,列有不同的类型,其中一种是 Double。Double 值现在应该四舍五入......

因为有很多行(数万或数十万)我将所有数据收集为字符串以避免耗时的类型转换。这很好,因为要导出到 Excel,我也需要字符串(写入 Office XML)。

但是现在四舍五入了。在 dataTable 中, double 应该四舍五入。如果我有一个 Double,我可以很容易地使用 f:convertNumber,但我没有。

我的想法是一个字符串转换器,它分析它是否是一个数值然后格式化字符串。 (性能不是那么重要,因为有分页数据表中只有 30 条左右的记录)。我将如何做到这一点?

任何(其他)建议?谢谢!
标记

编辑:
现在解决了

  public class ReportStringConverter implements Converter {

DecimalFormat f = new DecimalFormat("#0.00");

public Object getAsObject(FacesContext context, UIComponent component, String value) {
return value;
}

public String getAsString(FacesContext context, UIComponent component, Object value) {
if (isNumeric(value.toString())) {
return f.format(Double.parseDouble(value.toString()));
} else {
return value.toString();
}
}

private boolean isNumeric(String s) {
try {
double d = Double.parseDouble(s);
} catch (NumberFormatException e) {
return false;
}
return true;
}

}

最佳答案

您可以使用表达式语言将字符串转换为数字,方法是向其添加 0(例如:#{'35.75' + 0})。这使您可以简单地使用 f:convertNumber

<h:outputText value="#{'35.75' + 0}">
<f:convertNumber pattern="0"/>
</h:outputText>

关于来自字符串的 JSF 舍入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12364939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com