IceFaces(+JbossAS7のSeam3Framework)の「ice:rowSelector」タグを使用して、dataTableの行が高く評価されたときに、その行のデータが「ice:panelGrid」タグに表示されるようにしようとしています。 「ice:outputLabel」を使用します。
次のように、いくつかの例のようにclickListenerを設定しています。
<ice:rowSelector immediate="true" clickListener="#{categoryController.selectionListener}"/>
方法は次のとおりです。
public void selectionListener(ClickActionEvent clickActionEvent) {
selectedCategory= categories.get(clickActionEvent.getRow());
}
「カテゴリ」であること
List<Category> categories
しかし、アプリをテストすると、javax.el.MethodNotFoundException例外が発生します。次に、メソッド呼び出し(clickListener = "#{categoryController.selectionListener()}")に「()」を追加して、同じ例外を取得します。
最後に、clickListener = "#{categoryController.selectionListener(clickActionEvent)}"を設定すると、メソッドは呼び出されますが、「clickActionEvent」によってNullPointExceptionがスローされます。関連する部分は次のとおりです。
Caused by: javax.el.ELException: /showCategory.xhtml @20,114 clickListener="#{categoryController.selectionListener(clickActionEvent)}": java.lang.NullPointerException
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:111) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.icesoft.faces.component.facelets.MethodExpressionMethodBinding.invoke(IceComponentHandler.java:231) [icefaces-compat-3.0.1.jar:]
at com.icesoft.faces.component.ext.RowSelector.broadcast(RowSelector.java:530) [icefaces-compat-3.0.1.jar:]
at org.icefaces.impl.component.UISeriesBase.broadcast(UISeriesBase.java:481) [icefaces-3.0.1.jar:]
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:935) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78) [jsf-impl-2.1.7-jbossorg-2.jar:]
... 29 more
Caused by: java.lang.NullPointerException
私の質問は、ClickActionEventパラメーターとして「selectionListener」メソッドに何を渡す必要があるかということです。