I must be doing something really stupid because I can't seem to get incell editing to work for my DataTable despite banging my head on the problem all afternoon - sigh.
The data table
Code: Select all
<p:dataTable var="setting" value="#{systemSettingView.getSystemSettings( moduleName )}"
rowEditListener="#{systemSettingView.rowEdit}" onRowEditUpdate="messages">
<p:column>
<f:facet name="header">
<h:outputText value="#{msg.name}"/>
</f:facet>
<h:outputText value="#{msg[setting.name.resourceName]}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{msg.value}"/>
</f:facet>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{setting.value}"/>
</f:facet>
<f:facet name="input">
<p:calendar value="#{setting.date}" rendered="#{setting.name.type == 'DATE'}" effect="fade" navigator="true"/>
<p:spinner value="#{setting.integer}" rendered="#{setting.name.type == 'INTEGER'}"/>
<p:spinner value="#{setting.long}" rendered="#{setting.name.type == 'LONG'}"/>
<p:inputText value="#{setting.value}" rendered="#{setting.name.type == 'STRING'}"/>
<p:inputText value="#{setting.double}" rendered="#{setting.name.type == 'DOUBLE'}"/>
</f:facet>
</p:cellEditor>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{msg.description}"/>
</f:facet>
<h:outputText value="#{msg[setting.name.resourceDescription]}"/>
</p:column>
<p:column>
<p:rowEditor/>
</p:column>
</p:dataTable>
Code: Select all
public void rowEdit( RowEditEvent event ) {
SystemSetting setting = (SystemSetting)event.getObject();
logger.info( "Updating: {}", setting.toString() );
systemSettingService.update(setting);
}
Cheers, guys