我是JSF(只有1周大)和开发第一个组件的新手。组件是一个表格,该表将集合作为输入并以表格式呈现内容。除此之外,每行末尾还呈现一个"删除"链接。
i创建了"复合"组件(.xhtml)和componentType(带有@facescomponent的Java类)。
我在每行中显示了完整的表渲染,"删除"链接显示。现在尝试使用@facescomponent在我的课程中定义的操作添加。
<a4j:commandLink action="#{cc.removeRow(rowKey)}" value="Remove"/>
在我的组件(Java类)中,我定义了此方法的启动(整数Rowkey)。但是,在单击此"删除"链接时,该操作不会触发。我在组件中也定义了" h:form"。
任何帮助或指针都非常感谢。
编辑:只需查看这个问题如何使用JSF 2.0复合组件实现动态列表?它几乎类似于我的要求。我不确定的一件事是,渲染时的表单操作将是什么,如果我单击组件中的按钮,它将如何调用其自己的组件bean中的方法。
好吧,这是我正在做的错误。
我使用guava"表"集合渲染自定义表。表的初始化发生在" EncodeBegin"中,一次称为一次。因此,当我单击提交时,它试图重新渲染桌子,并且看到Null的所有内容,因此将NPE抛出。
我现在将表的初始化提取到单独的方法和辅助方法,以检索现有表(如果不是null或从属性重新定位)。
它现在起作用。