如何删除JSF dataTable中的行

本文介绍了一个JSF2.0示例,展示如何在dataTable中添加删除功能,以实现行记录的移除。示例包括一个托管bean和JSF页面,详细说明了从数据表中删除行的技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该示例通过添加“删除”功能来删除dataTable中的行,从而增强了先前的JSF 2 dataTable示例

删除概念

总体概念很简单:

1.在每行末尾分配一个“删除”链接。

//...
<h:dataTable value="#{order.orderList}" var="o">

<h:column>
    				
    <f:facet name="header">Action</f:facet>
    				
    <h:commandLink value="Delete" action="#{order.deleteAction(o)}" />
    				
</h:column>

2.如果单击“删除”链接,则将当前行对象传递到deleteAction()中。 在deleteAction()方法中,只需从“列表”中删除当前行对象,然后返回到当前页面即可。

public String deleteAction(Order order) {
	    
	orderList.remove(order);
	return null;
}

一个JSF 2.0示例,实现上述概念以删除dataTable中的行。

1.托管豆

一个自解释的名为“ order”的托管bean。

package com.mkyong;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
 
@ManagedBean(name="order")
@SessionScoped
public class OrderBean implements Serializable{

	private static final long serialVersionUID = 1L;

	private static final ArrayList<Order> orderList = 
		new ArrayList<Order>(Arrays.asList(
		
		new Order("A0001", "Intel CPU", 
				new BigDecimal("700.00"), 1),
		new Order("A0002", "Harddisk 10TB", 
				new BigDecimal("500.00"), 2),
		new Order("A0003", "Dell Laptop", 
				new BigDecimal("11600.00"), 8),
		new Order("A0004", "Samsung LCD", 
				new BigDecimal("5200.00"), 3),
		new Order("A0005", "A4Tech Mouse", 
				new BigDecimal("100.00"), 10)
	));
	 
	public ArrayList<Order> getOrderList() {
 
		return orderList;
 
	}
	
	public String deleteAction(Order order) {
	    
		orderList.remove(order);
		return null;
	}
 
	public static class Order{
		
		String orderNo;
		String productName;
		BigDecimal price;
		int qty;

		public Order(String orderNo, String productName, 
				BigDecimal price, int qty) {
			this.orderNo = orderNo;
			this.productName = productName;
			this.price = price;
			this.qty = qty;
		}
		
		//getter and setter methods
	}
}

2. JSF页面

JSF页面使用dataTable标记显示数据,并创建“删除”链接以删除行记录。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"   
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      >
    <h:head>
    	<h:outputStylesheet library="css" name="table-style.css"  />
    </h:head>
    <h:body>
    	
    	<h1>JSF 2 dataTable example</h1>
    	<h:form>
    		<h:dataTable value="#{order.orderList}" var="o"
    			styleClass="order-table"
    			headerClass="order-table-header"
    			rowClasses="order-table-odd-row,order-table-even-row"
    		>

    		<h:column>
    			
    			<f:facet name="header">Order No</f:facet>
    			#{o.orderNo}
    				
    		</h:column>
    			
    		<h:column>
    			
    			<f:facet name="header">Product Name</f:facet>
    			#{o.productName}
    				
    		</h:column>
    			
    		<h:column>
    				
    			<f:facet name="header">Price</f:facet>
    			#{o.price}
    				
    		</h:column>
    			
    		<h:column>
    				
    			<f:facet name="header">Quantity</f:facet>
    			#{o.qty}
    				
    		</h:column>
    		
    		<h:column>
    				
    			<f:facet name="header">Action</f:facet>
    				
    			<h:commandLink value="Delete" 
                                action="#{order.deleteAction(o)}" />
    				
    		</h:column>

    		</h:dataTable>
    		
    	</h:form>
    </h:body>
</html>

3.演示

从上到下显示正在删除的行记录。

jsf2-dataTable-Delete-Example-1
jsf2-dataTable-Delete-Example-2

下载源代码

下载它– JSF-2-DataTable-Delete-Example.zip (10KB)

翻译自: https://mkyong.com/jsf2/how-to-delete-row-in-jsf-datatable/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值