为了账号安全,请及时绑定邮箱和手机立即绑定

如何为数据表的每一行设置转换器属性?

如何为数据表的每一行设置转换器属性?

阿晨1998 2019-12-04 11:07:27
我创建了一个自定义ISO日期时间Converter:public class IsoDateTimeConverter implements Converter, StateHolder {    private Class type;    private String pattern;    private boolean transientValue = false;    public void setType(Class type) {        this.type = type;    }    public void setPattern(String pattern) {        this.pattern = pattern;    }    @Override    public Object getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException {        if (StringCheck.isNullOrEmpty(value)) {            throw new ConverterException("value not specified");        }        try {            if (IsoDate.class.equals(type)) {                if (WebConst.ISO_DATE_NONE.equals(value)) {                    return IsoDate.DUMMY;                } else {                    //TODO User spezifische TimeZone auslesen                    return new IsoDate(value, TimeZone.getDefault().getID());                }            } else if (IsoTime.class.equals(type)) {                if (WebConst.ISO_TIME_NONE.equals(value)) {                    return IsoTime.DUMMY;                } else {                    //TODO User spezifische TimeZone auslesen                    return new IsoTime(value, TimeZone.getDefault().getID());                }            } else if (IsoTimestamp.class.equals(type)) {                if (WebConst.ISO_TIMESTAMP_NONE.equals(value)) {                    return IsoTimestamp.DUMMY;                } else {                    //TODO User spezifische TimeZone auslesen                    return new IsoTimestamp(value, TimeZone.getDefault().getID());                }            } else {                throw new ConverterException("value not convertible");            }        } catch (Exception e) {            throw new ConverterException(e.getMessage());        }    }问题是,当我第一次打开该视图时,所有属性仅在我的Converter类中设置一次,然后数据表根据初始属性渲染并转换值。我希望属性是按行设置的。我该如何实现?
查看完整描述

2 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

我使用f:convertNumber(与您的f:*模式匹配),动态属性currencyCode="#{rowVar.someCurrencyCode}"by someCurrencyCode是实体的属性,rowVar来自p:dataTable var="rowVar"。那么我必须在这里编写自己的转换器吗?我已经有了Primefaces 6.2,如果有帮助的话。否则Omnifaces的事情看起来很简单。

查看完整回答
反对 回复 2019-12-04
  • 2 回答
  • 0 关注
  • 412 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号