gpt4 book ai didi

java - 如何在 JSF 表中添加清除按钮?

转载 作者:行者123 更新时间:2023-12-02 07:53:31 25 4
gpt4 key购买 nike

我正在研究这个用于显示数据的 JSF 表。

enter image description here

当我单击编辑按钮时,可以编辑 JSF 页面中的行。

enter image description here

这是代码:

<?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>

<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">Select</f:facet>

<h:selectBooleanCheckbox value="#{order.selectedIds[dataItem.id]}" />

</h:column>
<h:column>

<f:facet name="header">Order No</f:facet>

<h:inputText value="#{o.orderNo}" size="10" rendered="#{o.editable}" />

<h:outputText value="#{o.orderNo}" rendered="#{not o.editable}" />

</h:column>

<h:column>

<f:facet name="header">Product Name</f:facet>

<h:inputText value="#{o.productName}" size="20" rendered="#{o.editable}" />

<h:outputText value="#{o.productName}" rendered="#{not o.editable}" />

</h:column>

<h:column>

<f:facet name="header">Price</f:facet>

<h:inputText value="#{o.price}" size="10" rendered="#{o.editable}" />

<h:outputText value="#{o.price}" rendered="#{not o.editable}" />

</h:column>

<h:column>

<f:facet name="header">Quantity</f:facet>

<h:inputText value="#{o.qty}" size="5" rendered="#{o.editable}" />

<h:outputText value="#{o.qty}" rendered="#{not o.editable}" />

</h:column>

<h:column>

<f:facet name="header">Action</f:facet>

<h:commandLink value="Edit" action="#{order.editAction(o)}" rendered="#{not o.editable}" />

</h:column>

</h:dataTable>

<h:commandButton value="Save Changes" action="#{order.saveAction}" />
<h:commandButton value="Delete" action="#{order.getSelectedItems}" />

</h:form>
</h:body>

</html>


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

import java.util.HashMap;
import java.util.Map;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name="order")
@SessionScoped
public class OrderBean implements Serializable{

private Map<Long, Boolean> selectedIds = new HashMap<Long, Boolean>();
private List<OrderBean> selectedDataList;
Iterable<OrderBean> dataList = null;

public String getSelectedItems() {

// Get selected items.
selectedDataList = new ArrayList<OrderBean>();

for (OrderBean dataItem : dataList) {
if (selectedIds.get(dataItem.getId()).booleanValue()) {
selectedDataList.add(dataItem);
selectedIds.remove(dataItem.getId()); // Reset.
/* Insert into DB SQL stetement which deletes rows by using
dataItem as key */
}
}

return "selected"; // Navigation case.
}

public Map<Long, Boolean> getSelectedIds() {
return selectedIds;
}

public List<OrderBean> getSelectedDataList() {
return selectedDataList;
}


/* Create list with data */


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 saveAction() {

//get all existing value but set "editable" to false
for (Order order : orderList){
order.setEditable(false);
}

//return to current page
return null;

}

public String editAction(Order order) {

order.setEditable(true);
return null;
}

private Object getId() {
throw new UnsupportedOperationException("Not yet implemented");
}

public static class Order{

String orderNo;
String productName;
BigDecimal price;
int qty;
boolean editable;

public Order(String orderNo, String productName, BigDecimal price, int qty) {
this.orderNo = orderNo;
this.productName = productName;
this.price = price;
this.qty = qty;
}

public boolean isEditable() {
return editable;
}
public void setEditable(boolean editable) {
this.editable = editable;
}
public String getOrderNo() {
return orderNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
public int getQty() {
return qty;
}
public void setQty(int qty) {
this.qty = qty;
}
}
}

我想添加取消按钮,该按钮在按下编辑按钮后显示。现在,如果我想取消编辑表格,我必须重新加载页面。我怎样才能添加这个按钮?

最佳答案

只需使用按钮刷新页面即可。确保它是一个触发 GET 请求的按钮,例如 h:button。如果 o.editable 为 true,则让按钮呈现。

或者,如果您不想完全刷新,请使用 ajaxified h:commandButton 并重新呈现可编辑行。

<h:commandButton value="Cancel" action="#{bean.cancelAction(o)}">
<f:ajax execute="@this" render="ids of your row components">
<h:commandButton>

在给定的代码中,outputText 和 inputText 组件没有 id 属性。您需要添加它们才能使用 ajax。

关于java - 如何在 JSF 表中添加清除按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9928565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com