hi, here is my code snippet.i get it from javabeat.com.
i want to assign Name[] name by database.
And i want to delete any from datable by selectbooleancheckbox.
<html>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<f:view>
<head>
<link href="styles.css" rel="stylesheet" type="text/css"/>
<title>
<h:outputText value="#{msgs.windowTitle}"/>
</title>
</head>
<body>
<h:form>
<h:dataTable value="#{tableData.names}" var="name"
styleClass="names" headerClass="namesHeader"
columnClasses="last,first">
<h:column rendered="#{tableData.editable}">
<f:facet name="header">
<h:outputText value="#{msgs.deleteColumnHeader}"/>
</f:facet>
<h:selectBooleanCheckbox value="#{name.markedForDeletion}"
onchange="submit()"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{msgs.lastColumnHeader}"/>
</f:facet>
<h:outputText value="#{name.last},"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{msgs.firstColumnHeader}"/>
</f:facet>
<h:outputText value="#{name.first}"/>
</h:column>
</h:dataTable>
<h:outputText value="#{msgs.editPrompt}"/>
<h:selectBooleanCheckbox onchange="submit()"
value="#{tableData.editable}"/>
<h:commandButton value="#{msgs.deleteButtonText}"
rendered="#{tableData.editable}"
action="#{tableData.deleteNames}"
disabled="#{not tableData.anyNamesMarkedForDeletion}"/>
</h:form>
</body>
</f:view>
</html>
package com.corejsf;
public class Name {
private
String first;
private String last;
private boolean markedForDeletion = false;
public Name(String first, String last) {
this.first = first;
this.last = last;
}
public void setFirst(String newValue) { first = newValue; }
public String getFirst() { return first; }
public void setLast(String newValue) { last = newValue; }
public String getLast() { return last; }
public boolean isMarkedForDeletion() { return markedForDeletion; }
public void setMarkedForDeletion(boolean newValue) {
markedForDeletion = newValue;
}
}
package com.corejsf;
import javax.faces.model.DataModel;
import javax.faces.model.ArrayDataModel;
public class TableData {
private boolean editable = false;
private ArrayDataModel model = null;
private static final Name[] names = {
new Name("Anna", "Keeney"),
new Name("John", "Wilson"),
new Name("Mariko", "Randor"),
new Name("William", "Dupont"),
};
public TableData() { model = new ArrayDataModel(names); }
public DataModel getNames() { return model; }
public boolean isEditable() { return editable; }
public void setEditable(boolean newValue) { editable = newValue; }
public String deleteNames() {
if (!getAnyNamesMarkedForDeletion())
return null;
Name[] currentNames = (Name[]) model.getWrappedData();
Name[] newNames = new Name[currentNames.length
- getNumberOfNamesMarkedForDeletion()];
for(int i = 0, j = 0; i < currentNames.length; ++i) {
Name name = (Name) currentNames[i];
if (!name.isMarkedForDeletion()) {
newNames[j++] = name;
}
}
model.setWrappedData(newNames);
return null;
}
public int getNumberOfNamesMarkedForDeletion() {
Name[] currentNames = (Name[]) model.getWrappedData();
int cnt = 0;
for(int i = 0; i < currentNames.length; ++i) {
Name name = (Name) currentNames[i];
if (name.isMarkedForDeletion())
++cnt;
}
return cnt;
}
public boolean getAnyNamesMarkedForDeletion() {
Name[] currentNames = (Name[]) model.getWrappedData();
for(int i = 0; i < currentNames.length; ++i) {
Name name = (Name) currentNames[i];
if (name.isMarkedForDeletion())
return true;
}
return false;
}
}