0

我对 JSF 很陌生(只有 1 周大)并正在开发第一个组件。组件类似于表格,它将集合作为输入并以表格格式呈现内容。除此之外,还会在每行的末尾呈现一个“删除”链接。

我创建了“复合”组件 (.xhtml) 和 ComponentType(带有 @FacesComponent 的 java 类)。

我得到了完整的表格渲染,并且每一行都显示了“删除”链接。现在尝试添加在我的类中使用@FacesComponent 定义的操作。

<a4j:commandLink action="#{cc.removeRow(rowKey)}" value="Remove"/>

在我的组件(java 类)中,我定义了这个方法 removeRow(Integer rowKey)。但是在单击此“删除”链接时,不会触发该操作。我在组件中也定义了“h:form”。

非常感谢任何帮助或指示。

编辑:刚刚看了这个问题How to implement a dynamic list with a JSF 2.0 Composite Component? 它几乎符合我的要求。我不确定的一件事是当它被渲染时表单操作是什么,如果我单击组件中的按钮,它将如何调用它自己的组件 bean 中的方法。

4

1 回答 1

0

好的,这是我正在做的错误。

我正在使用 Guava "Table" Collection 渲染一个自定义表格。表的初始化发生在被调用一次的“encodeBegin”中。所以当我点击提交时,它试图重新渲染表格,它认为一切都是空的,因此抛出 NPE。

我现在将表的初始化提取到一个单独的方法和一个辅助方法以检索现有表(如果它不为空或从属性重新初始化)。

现在可以了。

于 2012-12-28T04:50:14.047 回答