Bonjour,
j'ai le simple code suivant , c'est en faite un example d'edit datatable trouvé dans le bouquin "Core Java Server Faces 3Rd Edition" :
un datatable contenu dans l'xhtml :
<h:dataTable value="#{tableData.names}" var="name">
<h:column>
<f:facet name="header">
<h:outputText value="#{msgs.editColumn}"
style="font-weight: bold"/>
</f:facet>
<h:selectBooleanCheckbox value="#{name.editable}" onclick="submit()"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{msgs.lastnameColumn}"
style="font-weight: bold"/>
</f:facet>
<h:inputText value="#{name.last}" rendered="#{name.editable}"
size="10"/>
<h:outputText value="#{name.last}" rendered="#{not name.editable}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{msgs.firstnameColumn}"
style="font-weight: bold"/>
</f:facet>
<h:inputText value="#{name.first}" rendered="#{name.editable}"
size="10"/>
<h:outputText value="#{name.first}" rendered="#{not name.editable}"/>
</h:column>
</h:dataTable>
<h:commandButton value="#{msgs.saveChangesButtonText}"
action="#{tableData.save}"/>
Le bean managé :
@ManagedBean // or @Named
@SessionScoped
public class TableData implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private static final Name[] names = new Name[] {
new Name("William", "Dupont"),
new Name("Anna", "Keeney"),
new Name("Mariko", "Randor"),
new Name("John", "Wilson")
};
public Name[] getNames() { return names;}
public String save() {
for (Name name : names) name.setEditable(false);
return null;
}
}
Le but est de faire changer les valeurs des attributs "rendered" des outputext et inputext qui contiennent un boolean "editable" lui même "value" dans le "selecbooleanCheckbox" qui lui, une fois le coché, va emmettre un submit() pour actualiser la valeur du boolean ..c clair, mais ça marche pas!
Dans une autre discussion, j'ai trouvé qui faut changer le "onclick " du checkbox par un "onchange".j'ai essayé mais en vain ..
quelqu'un a une idée ? merci davance !
Partager