- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我简单地试了一下:
public class UIDemoComponent extends UIComponentBase {
private String someVariable; // this gets always cleared, getters/setters omitted
public UIDemoComponent() {
super(); // place breakpoint here
}
@Override
public void encodeBegin(FacesContext context) throws IOException {
HtmlForm form = new HtmlForm();
form.setStyle("padding: 10px; background-color: blue;");
getChildren().add(form);
AjaxBehavior behavior = new AjaxBehavior();
behavior.setRender(Arrays.asList("@form"));
form.addClientBehavior("click", behavior);
}
}
我已经注册了一个标签处理程序并成功地将组件插入到页面中。但是,当我单击呈现的蓝色表单时,JSF 重新创建组件(捕获构造函数中的断点)。这样做的结果是所有实例变量都丢失了。如果组件总是被重新创建,应该如何将数据保存到组件中?
我尝试覆盖和检查 StateHolder
和 PartialStateHolder
的状态保存机制,但没有成功:
@Override
public Object saveState(FacesContext context) {
return super.saveState(context); // breakpoint
}
@Override
public void restoreState(FacesContext context, Object state) {
super.restoreState(context, state); // breakpoint
}
JSF 在创建页面和组件时执行 saveState
,但永远不会调用 restoreState
。实际上,当处理 AJAX 请求时,会创建一个新的 UIDemoComponent 实例,但会再次调用 saveState
方法,而不是 restoreState
。
如何创建这样一个状态保存组件(通过 AJAX 请求保留实例字段)?
最佳答案
似乎 JSF 正在对 state
对象运行一些预检查,如果未输入自定义字段,则根本不会执行 restoreState
。只有在实际将自定义值插入状态对象之后,才会调用 restoreState
。
例如:
@Override
public Object saveState(FacesContext context) {
Object[] rtrn = new Object[2];
rtrn[0] = super.saveState(context);
rtrn[1] = "dummy";
return rtrn;
}
在此之后,将调用 restoreState
并且可以根据需要恢复属性字段。
关于JSF 2.0 如何创建状态保存的 UIComponents?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4343874/
问候, 我有丰富的面孔应用程序(3.3.2.SR1)。该应用程序使用 ModelPanel 来查看实体。在我想显示它们之前,所有模式面板都不会渲染(渲染 = false)。应用程序变得大,并且从一个面
我收到了一个包含许多行的项目,如下所示: HtmlOutputText content = new HtmlOutputText(); ValueBinding vb = dashBoardBean.
我有一个带有单选选项的页面,其中有 3 个选项和一个 inputTextArea。当我按下我页面上的提交按钮时,我需要做一些验证......为了这样做,我在 radio 上放了一个 validator
我有一个 UIComponent,它是一个简单的 View (我缩小了问题范围)。这是 xib 和类: 然后我把这个组件放在 Storyboard的一个 View 中,设置它的约束: 所以通常情况下,
我们可以访问复合组件属性值(在接口(interface)部分中被污染),在 #{cc.attrs.attributeName} 之类的实现中 我们如何在支持组件中访问这个值? 最佳答案 它仅在 的任何
我的应用程序使用带有 PrimeFaces 的 JSF 2.1。最近,由于一些卡住的线程,观察到非常高的 CPU 使用率。所有卡住线程的卡住线程转储指向 javax.faces.component.U
因为我问过 my last question (仍然没有回答)我继续寻找解决方案,最后我找到了 this topic我认为这可以帮助实现我想要的。 所以,我尝试了该解决方案(这本身就是一种解决方法),
我简单地试了一下: public class UIDemoComponent extends UIComponentBase { private String someVariable; /
我的应用程序使用 JSF 2.1 和 PrimeFaces。最近,由于一些线程卡住,观察到 CPU 利用率非常高。所有卡住线程的卡住线程转储都指向 javax.faces.component.UICo
我想知道 UIComponent#getFamily() 方法是否可以返回 null? Mojarra 2.1.3 在返回 null 时会抛出异常,但 MyFaces 2.1.3 不会。 组件真的需要
如何为 UIComponent 属性创建自定义数据类型? 示例:假设一个人有一个 UIInputDate (一个 UIInput )并且有一个属性 Date maxDate ,我将如何确保无论maxD
我需要访问在 UIComponent 的 EL 表达式中使用的 bean 对象。 例如,在这个示例代码中: xhtml:
没有一个,组件渲染正常,但是,使用带有可重新渲染目标的 AJAX 失败(IllegalStateException)。 我想 UIComponents 需要符合 JavaBeans 规范。但为什么他们
我想通过 css 将所有样式属性/值的列表应用于 UIComponent 的选择器,但我似乎无法在任何地方找到它们的列表。 例如,我有一个 BorderContainer 并且 CSS 给了它 背景颜
这几天我一直在为此苦苦挣扎…… 对于管理扩展,我正在尝试使用 Ajax 加载 uiComponent 以显示在选项卡中。 uiComponent 已正确加载,但似乎没有被客户端淘汰逻辑完全处理。 na
我的 JSF 中有一个方法controller由 ajax 调用标签嵌套在可视组件中(与哪一个无关)。该方法采用 AjaxBehaviorEvent 类型的单个参数,从中我可以获取调用 HTML 可视
这个问题已经有答案了: Validation Error: Value is not valid (3 个回答) 已关闭 7 年前。 我在 requestScope 中使用 ManagedBean u
在许多情况下,我需要在运行时在应用程序的许多地方使用某些 UIComponent 的值。但问题是我无法在 ValueChangeListener 之外访问组件的值。我尝试将此值存储在本地临时变量中,我
所以我在第一帧的脚本中将这一行添加到我的 .FLA 文件中: import mx.core.UIComponent; 我收到此错误: 1093: Syntax error. 在 UIComponent
我正在尝试在接缝中为以下方法编写单元测试。为此......我需要模拟 facesContext 和 UIComponent 并将其传递给方法 getAsObject 。 我尝试使用 Jmock 和 s
我是一名优秀的程序员,十分优秀!