相关疑难解决方法(0)

Java相当于C#扩展方法

我希望在C#中使用扩展方法实现对象列表中的功能.

像这样的东西:

List<DataObject> list;
// ... List initialization.
list.getData(id);
Run Code Online (Sandbox Code Playgroud)

我如何用Java做到这一点?

java extension-methods

166
推荐指数
10
解决办法
9万
查看次数

防止应用程序某些部分的组件树序列化

是否可以明确拒绝 JSF 序列化某些组件树?目前我正在将一个不可序列化的对象传递给<h:inputText>

<h:inputText value="#{nonSerializableBean.nonSerializableClassInstance}" />
Run Code Online (Sandbox Code Playgroud)

单击几次后会发生什么(在视图恢复期间):

javax.faces.FacesException: Unexpected error restoring state for component
with id configurationForm:j_idt292:j_idt302:field.  Cause:
java.lang.IllegalStateException: java.lang.InstantiationException:
my.namespace.NonSerializableClass
Run Code Online (Sandbox Code Playgroud)

我认为发生这种情况是因为 JSF 无法恢复nonSerializableClassInstance

Caused by: java.lang.IllegalStateException: java.lang.InstantiationException: com.foobar.utils.text.Period
at javax.faces.component.StateHolderSaver.restore(StateHolderSaver.java:110)
at javax.faces.component.ComponentStateHelper.restoreState(ComponentStateHelper.java:292)
at javax.faces.component.UIComponentBase.restoreState(UIComponentBase.java:1444)
at javax.faces.component.UIOutput.restoreState(UIOutput.java:255)
at javax.faces.component.UIInput.restoreState(UIInput.java:1359)
Run Code Online (Sandbox Code Playgroud)

一个额外的问题:不让支持 bean 可序列化可以吗?那么这是否应该阻止这些序列化/反序列化?

一些背景:

我们有很多 3rd 方类,需要在 JSF 中提供表单。问题是我们不能直接在 JSF 页面上使用这些类,因为它们没有实现 Serialized 接口,因此如果 JSF 运行时决定序列化/反序列化页面和组件树,它们将会/应该失败。这些类是“封闭的”,我们不允许修改它们。

运行 Mojarra 2.0.2。

jsf serialization jsf-2

1
推荐指数
1
解决办法
5598
查看次数

标签 统计

extension-methods ×1

java ×1

jsf ×1

jsf-2 ×1

serialization ×1