Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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
Jsf UISelectOne和UISelectMany组件如何在f:selectItems中预选默认值_Jsf_Jsf 2_Primefaces_Selectonemenu_Selectmanymenu - Fatal编程技术网

Jsf UISelectOne和UISelectMany组件如何在f:selectItems中预选默认值

Jsf UISelectOne和UISelectMany组件如何在f:selectItems中预选默认值,jsf,jsf-2,primefaces,selectonemenu,selectmanymenu,Jsf,Jsf 2,Primefaces,Selectonemenu,Selectmanymenu,我知道如何预选,在所选的中,值应该是中的一个对象,但是该组件在引擎盖下如何工作,我可以更改此行为吗 在我的例子中,我有一个重复的对象,实际上这是两个具有相同值但创建了两次的对象,中的选定对象与中的对象不同,它无法识别它。 我很可能会更改我的设计,使其指向相同的对象,但如果由于遗留代码等原因我无法执行,我如何更改的行为,例如,它将通过id比较对象 我原以为是converter导致了它,但当它渲染时,它并没有进入getAsObject方法onlygetastring,所以我猜有一些不同的地方,但是呢

我知道如何预选
,在所选的
中,值应该是
中的一个对象,但是该组件在引擎盖下如何工作,我可以更改此行为吗

在我的例子中,我有一个重复的对象,实际上这是两个具有相同值但创建了两次的对象,
中的选定对象与
中的对象不同,它无法识别它。 我很可能会更改我的设计,使其指向相同的对象,但如果由于遗留代码等原因我无法执行,我如何更改
的行为,例如,它将通过
id
比较对象

我原以为是
converter
导致了它,但当它渲染时,它并没有进入
getAsObject
方法only
getastring
,所以我猜有一些不同的地方,但是呢

谢谢你

这是它用的。您可以通过在实体上相应地实现此行为来更改(修复)此行为

private Long id;

@Override
public boolean equals(Object other) {
    return (other != null && getClass() == other.getClass() && id != null)
        ? id.equals(getClass().cast(other).id)
        : (other == this);
}
别忘了让顾客满意

如果由于某些不清楚的原因无法更改现有实体,请将其包装在自己的DTO中

转换器仅在实体及其唯一的
字符串
表示形式之间进行转换,以便在HTML输出和HTTP请求参数中使用,因此不会影响预选。它只对潜在的麻烦有影响

另见:

非常感谢您,巴卢斯克!
@Override
public int hashCode() {
    return (id != null) 
        ? (getClass().hashCode() + id.hashCode())
        : super.hashCode();
}