Java 单击列本身中的HTMLCOMMAND按钮删除HtmlColumn
我已经在backingbean中生成了一个Java 单击列本身中的HTMLCOMMAND按钮删除HtmlColumn,java,jsf,jsf-2,Java,Jsf,Jsf 2,我已经在backingbean中生成了一个HtmlCommandButton。单击该按钮,我想从烘焙豆中生成的HtmlDataTable中删除HtmlColumn <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"> <head> <meta http-equiv="Content-Type" content="text
HtmlCommandButton
。单击该按钮,我想从烘焙豆中生成的HtmlDataTable
中删除HtmlColumn
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>JSF dynamic</title>
</head>
<body>
<h:form prependId="false">
<br/><br/>
<h:outputText value="Enter no. of columns : "/>
<h:inputText value="#{MyTest.colNos}"/>  
<h:commandButton value="add" action="#{MyTest.createTable}">
</h:commandButton>
<br/><br/>
<br/><br/>
<h:dataTable id="table" binding="#{MyTest.hdt}">
</h:dataTable>
</h:form>
</body>
</html>
JSF动态
MyTest.java
package com.test;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.el.MethodExpression;
import javax.el.ValueExpression;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.UIComponent;
import javax.faces.component.UISelectItems;
import javax.faces.component.html.HtmlColumn;
import javax.faces.component.html.HtmlCommandButton;
import javax.faces.component.html.HtmlDataTable;
import javax.faces.component.html.HtmlInputText;
import javax.faces.component.html.HtmlOutputText;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
@ManagedBean(name = "MyTest")
@ViewScoped
public class MyTest {
public MyTest() {
}
private Integer colNos;
public Integer getColNos() {
return colNos;
}
public void setColNos(Integer colNos) {
this.colNos = colNos;
}
List<Object> objects = new ArrayList<Object>();
public List<Object> getObjects() {
return objects;
}
public void setObjects(List<Object> objects) {
this.objects = objects;
}
Integer countMenu1;
Integer countMenu2;
public Integer getCountMenu1() {
return countMenu1;
}
public void setCountMenu1(Integer countMenu1) {
this.countMenu1 = countMenu1;
}
public Integer getCountMenu2() {
return countMenu2;
}
public void setCountMenu2(Integer countMenu2) {
this.countMenu2 = countMenu2;
}
HtmlDataTable hdt;
public HtmlDataTable getHdt() {
return hdt;
}
public void setHdt(HtmlDataTable hdt) {
this.hdt = hdt;
}
public void createTable() {
hdt.getChildren().clear();
hdt.setValueExpression("value", createValueExpression("#{MyTest.tableObjects}", List.class));
hdt.setVar("tobject");
for (int i = 0; i < colNos; i++) {
HtmlColumn column = new HtmlColumn();
HtmlCommandButton commandButton = new HtmlCommandButton();
commandButton.setValue("Delete" + i);
commandButton.setActionExpression(createMethodExpression("#{MyTest.deleteColumn('" + i + "')}", Void.TYPE, new Class<?>[0]));
column.getChildren().add(commandButton);
HtmlOutputText htmlOutputText5 = new HtmlOutputText();
htmlOutputText5.setValue("<br/>");
htmlOutputText5.setEscape(false);
column.getChildren().add(htmlOutputText5);
HtmlInputText htmlInputText = new HtmlInputText();
htmlInputText.setValueExpression("value", createValueExpression("#{tobject.headerName}", String.class));
column.getChildren().add(htmlInputText);
HtmlOutputText htmlOutputText1 = new HtmlOutputText();
htmlOutputText1.setValue("<br/>");
htmlOutputText1.setEscape(false);
column.getChildren().add(htmlOutputText1);
HtmlSelectOneMenu menu1 = new HtmlSelectOneMenu();
menu1.setValue(countMenu1);
UISelectItems itemGroup1 = new UISelectItems();
itemGroup1.setValueExpression("value", createValueExpression("#{tobject.dataTypes}", List.class));
menu1.getChildren().add(itemGroup1);
column.getChildren().add(menu1);
HtmlOutputText htmlOutputText2 = new HtmlOutputText();
htmlOutputText2.setValue("<br/>");
htmlOutputText2.setEscape(false);
column.getChildren().add(htmlOutputText2);
HtmlSelectOneMenu menu2 = new HtmlSelectOneMenu();
menu2.setValue(countMenu2);
UISelectItems itemGroup2 = new UISelectItems();
itemGroup2.setValueExpression("value", createValueExpression("#{tobject.filledBy}", List.class));
menu2.getChildren().add(itemGroup2);
column.getChildren().add(menu2);
hdt.getChildren().add(column);
}
}
List<TableObject> tableObjects = new ArrayList<TableObject>();
public List<TableObject> getTableObjects() {
if (tableObjects.isEmpty()) {
TableObject to1 = new TableObject();
to1.setHeaderName("");
List<SelectItem> filledBy = new ArrayList<SelectItem>();
filledBy.add(new SelectItem(1, "Buyer"));
filledBy.add(new SelectItem(2, "Vendor"));
to1.setFilledBy(filledBy);
List<SelectItem> dataTypes = new ArrayList<SelectItem>();
dataTypes.add(new SelectItem(1, "String"));
dataTypes.add(new SelectItem(2, "Integer"));
to1.setDataTypes(dataTypes);
tableObjects.add(to1);
}
return tableObjects;
}
public void setTableObjects(List<TableObject> tableObjects) {
this.tableObjects = tableObjects;
}
public void deleteColumn(String arg) {
hdt.getChildren().remove(Integer.parseInt(arg));
}
private ValueExpression createValueExpression(String valueExpression, Class<?> valueType) {
FacesContext facesContext = FacesContext.getCurrentInstance();
return facesContext.getApplication().getExpressionFactory().createValueExpression(
facesContext.getELContext(), valueExpression, valueType);
}
private MethodExpression createMethodExpression(String valueExpression, Class<?> valueType, Class<?>[] expectedParamTypes) {
FacesContext facesContext = FacesContext.getCurrentInstance();
return facesContext.getApplication().getExpressionFactory().createMethodExpression(
facesContext.getELContext(), valueExpression, valueType, expectedParamTypes);
}
}
package.com.test;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Map;
导入javax.el.MethodExpression;
导入javax.el.ValueExpression;
导入javax.faces.bean.ManagedBean;
导入javax.faces.bean.ViewScoped;
导入javax.faces.component.UIComponent;
导入javax.faces.component.UISelectItems;
导入javax.faces.component.html.HtmlColumn;
导入javax.faces.component.html.htmlCommand按钮;
导入javax.faces.component.html.HtmlDataTable;
导入javax.faces.component.html.HtmlInputText;
导入javax.faces.component.html.htmlouttext;
导入javax.faces.component.html.HtmlSelectOneMenu;
导入javax.faces.context.FacesContext;
导入javax.faces.model.SelectItem;
@ManagedBean(name=“MyTest”)
@视域
公共类MyTest{
公共MyTest(){
}
私有整数colNos;
公共整数getColNos(){
返回colNos;
}
公共无效集合colNos(整数colNos){
this.colNos=colNos;
}
列表对象=新的ArrayList();
公共列表getObjects(){
归还物品;
}
公共void集合对象(列出对象){
this.objects=对象;
}
整数countMenu1;
整数countMenu2;
公共整数getCountMenu1(){
返回计数菜单1;
}
public void setCountMenu1(整数countMenu1){
this.countMenu1=countMenu1;
}
公共整数getCountMenu2(){
返回countMenu2;
}
public void setCountMenu2(整数countMenu2){
this.countMenu2=countMenu2;
}
HtmlDataTable hdt;
公共HtmlDataTable getHdt(){
返回hdt;
}
公共void setHdt(htmldataable hdt){
this.hdt=hdt;
}
公共void createTable(){
hdt.getChildren().clear();
setValueExpression(“value”,createValueExpression(“#{MyTest.tableObjects}”,List.class));
hdt.setVar(“tobject”);
对于(int i=0;i ”);
htmlOutputText5.setEscape(false);
column.getChildren().add(htmlOutputText5);
HtmlInputText HtmlInputText=新的HtmlInputText();
setValueExpression(“value”,createValueExpression(“#{tobject.headerName}”,String.class));
column.getChildren().add(htmlInputText);
HtmlOutputText htmlOutputText1=新的HtmlOutputText();
HtmlOuttext1.setValue(“
”);
htmlOutputText1.setEscape(false);
column.getChildren().add(htmloutputtex1);
HtmlSelectOneMenu menu1=新建HtmlSelectOneMenu();
menu1.设置值(countMenu1);
UISelectItems itemGroup1=新UISelectItems();
itemGroup1.setValueExpression(“value”,createValueExpression(“#{tobject.dataTypes}”,List.class));
menu1.getChildren().add(itemGroup1);
column.getChildren().add(menu1);
HtmlOutputText htmlOutputText2=新的HtmlOutputText();
HtmlOuttext2.setValue(“
”);
htmlOutputText2.setEscape(false);
column.getChildren().add(htmlOutputText2);
HtmlSelectOneMenu menu2=新建HtmlSelectOneMenu();
menu2.setValue(countMenu2);
UISelectItems itemGroup2=新UISelectItems();
itemGroup2.setValueExpression(“value”,createValueExpression(“#{tobject.filledBy}”,List.class));
menu2.getChildren().add(itemGroup2);
column.getChildren().add(menu2);
hdt.getChildren().add(列);
}
}
List tableObjects=new ArrayList();
公共列表getTableObjects(){
if(tableObjects.isEmpty()){
TableObject to1=新的TableObject();
to1.setHeaderName(“”);
List filledBy=new ArrayList();
添加(新选择项(1,“买方”);
添加(新选择项(2,“供应商”);
to1.setFilledBy(filledBy);
列表数据类型=新的ArrayList();
添加(新选择项(1,“字符串”);
添加(新的SelectItem(2,“整数”);
to1.设置数据类型(数据类型);
tableObjects.add(to1);
}
返回表对象;
}
公共void setTableObjects(列出tableObjects){
this.tableObjects=tableObjects;
}
公共void deleteColumn(字符串参数){
getChildren().remove(Integer.parseInt(arg));
}
私有值表达式createValueExpression(字符串值表达式,类值类型){
FacesContext FacesContext=FacesContext.getCurrentInstance();
返回facesContext.getApplication().getExpressionFactory().createValueExpression(
facesContext.getELContext(),valueExpression,valueType);
}
私有方法表达式createMethodExpression(字符串值表达式、类值类型、类[]expectedParamTypes){
FacesContext FacesContext=FacesContext.getCurrentInstance();
返回面孔
<h:dataTable id="dataTable" binding="#{backingBean.tableComponent}" value="#{backingBean.someList}">
//---
SomeObject selectedObject = (SomeObject) tableComponent.getRowData();
someList.remove(selectedObject);
//--