Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多功能环境中的javax.faces.convert.Converter_Java_Multi Tenant_Converters - Fatal编程技术网

多功能环境中的javax.faces.convert.Converter

多功能环境中的javax.faces.convert.Converter,java,multi-tenant,converters,Java,Multi Tenant,Converters,我的自定义转换器有问题 @FacesConverter(value = "converterObjet") public class ConverterObjet implements Converter { private static Map<Object, String> listObjet = new WeakHashMap<Object, String>(); @Override public String getAsString(F

我的自定义转换器有问题

@FacesConverter(value = "converterObjet")
public class ConverterObjet implements Converter {

    private static Map<Object, String> listObjet = new WeakHashMap<Object, String>();

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object entity) {
        synchronized (listObjet) {
            if (!listObjet.containsKey(entity)) {
                String uuid = UUID.randomUUID().toString();
                listObjet.put(entity, uuid);
                return uuid;
            } else {
                return listObjet.get(entity);
            }
        }
    }
    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String uuid) {
        for (Entry<Object, String> entry : listObjet.entrySet()) {
            if (entry.getValue().equals(uuid)) {
                return entry.getKey();
            }
        }
        return null;
    }
@多租户(每个租户的多租户类型表) @TenantTableDiscriminator(type=TenantTableDiscriminatorType.SCHEMA,contextProperty=“租户id”) 公共类控件实现可序列化{

hashCode()对于具有相同id的所有租户配置是相同的

@Override
    public int hashCode() {
        // TODO Auto-generated method stub
        final int prime = 31;
        int hash = 17;
        hash = hash * prime+ this.idpays.hashCode();
        return hash;
    }
我在XHTML页面中使用的转换器如下:

<p:selectOneMenu widgetVar="wvCtrcdt" id="contry"
                                                height="150" value="#{candidatView.contryChoosen}"
                                                converter="converterObjet" filter="true">
                                                <f:selectItem itemLabel="#{text['chxInit']}" itemValue=""></f:selectItem>
                                                <f:selectItems value="#{contryView.listcontry}" var="contry"
                                                    itemLabel="#{contry.contryname}" itemValue="#{contry}"></f:selectItems>
                                                <p:ajax update="PoBirth" />
                                            </p:selectOneMenu>

转换器返回的contryChoosen不是来自当前租户,因为它被认为在地图中已经存在,因为它具有与第一个租户所在国家/地区相同的id。
问题是我如何定制我的转换器,这样它就可以区分租户国家,即使他们有相同的id?

而不是在地图中添加tennant前缀,从而使I'd唯一。这实际上不是JSF的问题,而是java中的一个通用“问题”…是的,你绝对正确。我就是这么做的!
<p:selectOneMenu widgetVar="wvCtrcdt" id="contry"
                                                height="150" value="#{candidatView.contryChoosen}"
                                                converter="converterObjet" filter="true">
                                                <f:selectItem itemLabel="#{text['chxInit']}" itemValue=""></f:selectItem>
                                                <f:selectItems value="#{contryView.listcontry}" var="contry"
                                                    itemLabel="#{contry.contryname}" itemValue="#{contry}"></f:selectItems>
                                                <p:ajax update="PoBirth" />
                                            </p:selectOneMenu>