В моем приложении JSF у меня довольно простой фрагмент кода.Я хочу, чтобы пользователь выбрал одно значение из коллекции в <h:selectOneMenu>
:
<h:selectOneMenu value="#{bean.value}">
<f:selectItems value="#{dao.valuesFromDb}" />
</h:selectOneMenu>
#{bean.value}
имеет тип Region
, а #{dao.valuesFromDb}
возвращает список Regions
.Проблема в том, что Region
в бине лениво загружается из hibernate, который оборачивает его в какую-то оболочку, класс выглядит как my.package.Region_$$_javassist_15@25183
.
Если #{bean.value}
имеет какое-то установленное значение, его следует предварительно выбрать встраница, если она находится в списке значений (#{dao.valuesFromDb}
).Проблема в том, что проверяется методом equals
, который возвращает false
, потому что типы разные.
Как решить эту проблему?Можно ли заставить JSF не использовать equals
, а как-нибудь обработать это сравнение самостоятельно?Переопределение equals
, игнорирующее тип, ИМХО действительно плохая идея, поскольку может нарушить equals
симметрию.