我是JSF(仅1周大)的新手并开发第一个组件。组件类似于一个表,它将集合作为输入并以表格格式呈现内容。除此之外,每行末尾都会显示“删除”链接。
我创建了“Composite”组件(.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中调用该方法。
答案 0 :(得分:0)
好的,这是我正在做的错误。
我正在使用Guava“Table”Collection渲染自定义表。这个表的初始化发生在被称为一次的“encodeBegin”中。因此,当我点击提交时,它试图重新渲染表格,它将所有内容视为空,因此抛出NPE。
我现在将table的初始化提取到一个单独的方法和一个帮助器方法,以检索现有的表,如果它不为null或从属性重新初始化。
现在有效。