我正在處理這個示例資料表選擇“CheckBox”: https ://www.primefaces.org/showcase/ui/data/datatable/selection.xhtml?jfwid=39489
我無法檢測到問題的根源,顯示效果很好,我什至嘗試在沒有選擇的情況下插入,效果很好;好吧,我之前有一個示例,它比大型資料庫更復雜,我也遇到了同樣的問題
所以我在下面的迷你表測驗中做了這個 Primefaces 代碼:
<h:form>
<p:dataTable var="usee" value="#{user.get_all_user}" id="checkboxDT"
selection="#{user.selectedUsers}" rowKey="#{user.id}"
style="margin-bottom:0" paginator="true" rows="5" selectionPageOnly="false" size="small">
<p:column selectionMode="multiple" style="width:16px;text-align:center"/>
<p:column headerText="id">
<h:outputText value="#{usee.id}"></h:outputText>
</p:column>
<p:column headerText="nom">
<h:outputText value="#{usee.nom}"></h:outputText>
</p:column>
<p:column headerText="prenom">
<h:outputText value="#{usee.prenom}"></h:outputText>
</p:column>
</p:dataTable>
<p:commandButton value="Ajouter Y" action="#{user.add_selected_users(selectedUsers)}"></p:commandButton>
</h:form>
用戶.java代碼:
public class user implements Serializable {
/**
* Creates a new instance of user
*/
private int id;
private String nom;
private String prenom;
private user selectedUser;
private List<user> selectedUsers;
public user getSelectedUser() {
return selectedUser;
}
public void setSelectedUser(user selectedUser) {
this.selectedUser = selectedUser;
}
public List<user> getSelectedUsers() {
return selectedUsers;
}
public void setSelectedUsers(List<user> selectedUsers) {
this.selectedUsers = selectedUsers;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
public user() {
}
public ArrayList<user> getGet_all_user() throws Exception{
ArrayList<user> users = new ArrayList<user>();
Connection connection = null;
try{
DB_connection obj_DB_connection = new DB_connection();
connection = obj_DB_connection.get_connection();
Statement st = connection.createStatement();
ResultSet rs=st.executeQuery("select * from users");
while(rs.next()){
user obj_user = new user();
obj_user.setId(rs.getInt("id"));
obj_user.setNom(rs.getString("nom"));
obj_user.setPrenom(rs.getString("prenom"));
users.add(obj_user);
}
}catch(Exception e){
System.out.println(e);
}
finally{
if(connection!=null){
connection.close();
}
}
return users;
}
public static void add_selected_users(List<user> selectedUsers) throws Exception{
Connection connection = null;
try{
DB_connection obj_DB_connection = new DB_connection();
connection = obj_DB_connection.get_connection();
PreparedStatement st = connection.prepareStatement("insert into users(`nom` ,`prenom` ) values(?,?)");
for(int i=0;i<selectedUsers.size();i ){
st.setString(1, selectedUsers.get(i).getNom());
st.setString(2, selectedUsers.get(i).getPrenom());
st.executeUpdate();
}
}catch(Exception e){
System.out.println(e);
}
finally{
if(connection!=null){
connection.close();
}
}
}
}
uj5u.com熱心網友回復:
您無需將選擇傳遞給操作。選擇系結在您的 bean 中,因此您可以簡單地執行以下操作:
<p:commandButton value="Ajouter Y" action="#{user.add_selected_users}"/>
public void add_selected_users() {
for (User user : selectedUsers) {
// Do something with the selected user
}
}
順便說一句,您的用戶物件不符合類的 Java 命名標準。它應該是User(帶有大寫字母)。
uj5u.com熱心網友回復:
事實上,我剛剛明白值存盤在 getter 和 setter 級別,現在效果很好,但問題是現在選擇只恢復第一個專案,當我選擇第二個或第三個專案時,它只添加第一項
public static void add_selected_users() throws Exception{
Connection connection = null;
try{
DB_connection obj_DB_connection = new DB_connection();
connection = obj_DB_connection.get_connection();
PreparedStatement st = connection.prepareStatement("insert into users(`nom` ,`prenom` ) values(?,?)");
for(int i=0;i<selectedUsers.size();i ){
st.setString(1, selectedUsers.get(i).getNom());
st.setString(2, selectedUsers.get(i).getPrenom());
st.executeUpdate();
}
}catch(Exception e){
System.out.println(e);
}
finally{
if(connection!=null){
connection.close();
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/485075.html
上一篇:JetpackComposeTapjacking:過濾對模糊UI的觸摸
下一篇:用資料庫中的資料填充JTable
