栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

通用JSF实体转换器

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通用JSF实体转换器

好吧,我今天遇到了同样的问题,我通过创建一个通用的ConversionHelper并在转换器中使用了它来解决了这个问题。为此,我有一个EntityService,它是通用的SLSB,可用于对任何实体类型执行简单的CRUD操作。我的实体还实现了PersistentEntity接口,该接口具有getId和setId方法,并且使用简单的主键对其进行保存。而已。

最后,我的转换器看起来像这样:

@FacesConverter(value = "userConverter", forClass = User.class)public class UserConverter implements Converter {    @Override    public Object getAsObject(FacesContext ctx, UIComponent component, java.lang.String value) {        return ConversionHelper.getAsObject(User.class, value);    }    @Override    public String getAsString(FacesContext ctx, UIComponent component, Object value) {        return ConversionHelper.getAsString(value);    }}

我的转换助手如下所示:

public final class ConversionHelper {    private ConversionHelper() {    }    public static <T> T getAsObject(Class<T> returnType, String value) {        if (returnType== null) { throw new NullPointerException("Trying to getAsObject with a null return type.");        }        if (value == null) { throw new NullPointerException("Trying to getAsObject with a null value.");        }        Long id = null;        try { id = Long.parseLong(value);        } catch (NumberFormatException e) { throw new ConverterException("Trying to getAsObject with a wrong id format.");        }        try { Context initialContext = new InitialContext(); EntityService entityService = (EntityService) initialContext.lookup("java:global/myapp/EntityService"); T result = (T) entityService.find(returnType, id); return result;        } catch (NamingException e) { throw new ConverterException("EntityService not found.");        }    }    public static String getAsString(Object value) {        if (value instanceof PersistentEntity) { PersistentEntity result = (PersistentEntity) value; return String.valueOf(result.getId());        }        return null;    }}

现在,为简单的JPA实体创建转换器只需复制一个转换器并更改3个参数即可。

这对我来说效果很好,但就样式和性能而言,我不知道这是否是最佳方法。任何提示将不胜感激。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/440390.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号