Seam 2.2.2, JSF 1.2. It sounds so simple: a dataTable
where each row has a checkbox that I want to observe when some button is called. I have a controller:
@Name("MyController")
@Scope(ScopeType.PAGE)
public class MyController {
private List<MyItem> myItems;
public MyItem[] getItemsList(boolean excluded) {
return myItems;
}
I have the MyItem
type:
public class MyItem {
private boolean selected = false;
public boolean isSelected() {
return selected;
}
public void setSelected(boolean selected) {
System.out.println("setting to " + selected);
this.selected = selected;
}
... other things ...
}
This is my XHTML:
<a:form id="formExcludedList">
<rich:dataTable id="excludeList"
value="#{MyController.getItemsList(true)}" var="o">
<rich:column>
<h:selectBooleanCheckbox id="selectComponent"
value="#{o.selected}" />
</rich:column>
When clicking the check box MyItem.setSelected
is not executed. I am getting some funky logging though: (groomed for brevity)
DEBUG createHotDeployment - Using Java hot deploy
DEBUG beginRequest - >>> Begin JSF request for <my page>
DEBUG begin - beginning transaction prior to phase: RESTORE_VIEW(1)
DEBUG begin - beginning JTA transaction
WARN getInstance - Cannot create Seam component, scope is not active: MyController(PAGE)
WARN getInstance - Cannot create Seam component, scope is not active: MyController(PAGE)
WARN getInstance - Cannot create Seam component, scope is not active: MyController(PAGE)
WARN getInstance - Cannot create Seam component, scope is not active: MyController(PAGE)
DEBUG restoreAndLockConversation - No stored conversation
DEBUG commitOrRollback - committing transaction after phase: INVOKE_APPLICATION(5)
DEBUG commit - committing JTA transaction
DEBUG begin - beginning transaction prior to phase: RENDER_RESPONSE(6)
DEBUG begin - beginning JTA transaction
DEBUG commitOrRollback - committing transaction after phase: RENDER_RESPONSE(6)
DEBUG commit - committing JTA transaction
DEBUG endRequest - Discarding conversation state: 7
DEBUG endRequest - After render response, destroying contexts
DEBUG flushAndDestroyContexts - ... et cetera
DEBUG destroy - destroying: ...
DEBUG destroy - destroying: ... et cetera
DEBUG endRequest - <<< End JSF request for <my page>
Your help much appreciated!
It turned out that I was missing a few JSF dependencies: jsf-api.jar
and jsf-impl.jar
. Subsequently it took the ones provided by my container (WebSphere), which were of the wrong version, hence it not working. Once applying these dependency JARs and of the right version, all was good!