并从休眠状态进行延迟加载
||
在我的JSF应用程序中,我有一段非常简单的代码。我希望用户从
<h:selectOneMenu>
的集合中选择一个值:
<h:selectOneMenu value=\"#{bean.value}\">
<f:selectItems value=\"#{dao.valuesFromDb}\" />
</h:selectOneMenu>
#{bean.value}
的类型为Region
,#{dao.valuesFromDb}
返回list5ѭ的列表。问题在于,bean中的“ 3”是从休眠中延迟加载的,将其包装在某些包装中,类看起来像“ 7”。
如果#{bean.value}
设置了某个值,则它在值列表(#{dao.valuesFromDb}
)中应在页面上预先选择。问题是通过equals
方法进行检查,由于类型不同,该方法返回false
。
如何解决这个问题呢?是否可以强迫JSF不使用equals
,而是自己处理比较?覆盖equals
以使其忽略类型是恕我直言,这真的不是一个好主意,因为它可以破坏equals
的对称性。
没有找到相关结果
已邀请:
3 个回复
磁辫覆氓
中获取
,从而完全避免了该问题。 与equals()混为一谈所产生的清晰代码要比简单地获取JSF想要进行比较的信息少得多。正如您所指出的那样,可能会产生意想不到的后果。
蕉衫
降女陷费券
getter来预加载Bean。即:只需调用
方法。 这样,您将不会获得LazyInitializationException(如果这就是您要得到的)。