【问题标题】:Custom Component in JSF2 which takes input modifies it on button click and re-renders the componentJSF2 中接受输入的自定义组件在按钮单击时修改它并重新呈现组件
【发布时间】:2012-12-12 16:05:48
【问题描述】:

我对 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 中调用该方法。

【问题讨论】:

    标签: jsf-2


    【解决方案1】:

    好吧,这就是我犯的错误。

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

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

    现在可以了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-12
      • 1970-01-01
      • 2020-12-29
      • 2018-03-28
      • 1970-01-01
      • 2022-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多