使用backingbean方法添加jsf命令按钮

使用backingbean方法添加jsf命令按钮,jsf,Jsf,下面的HI代码创建了一个动态数据表,其中的no of列基于所选国家/地区。 现在,我想在每一行之前添加命令按钮,删除选中的行。 我能够创建表,但不能在适当的位置添加命令按钮。当我添加commandbutton时,它会创建两行 public void loadDynamicList() throws Exception { int i = 0; dynamicList = new ArrayList<List<String>>(); dynamicL

下面的HI代码创建了一个动态数据表,其中的no of列基于所选国家/地区。 现在,我想在每一行之前添加命令按钮,删除选中的行。 我能够创建表,但不能在适当的位置添加命令按钮。当我添加commandbutton时,它会创建两行

public void loadDynamicList() throws Exception {
    int i = 0;
    dynamicList = new ArrayList<List<String>>();
    dynamicList.add(Arrays.asList(new String[] { "ID1" }));
    existingCountryList = new ArrayList<Country>();
    String countryCode = "US";
    existingCountryList.add(getCountryService().getCountryByCode(
            countryCode));
    Country country = getCountryService().getCountryByCode(countryCode);
    countryLanguageSet = country.getCountryLanguage();
    i = country.getCountryLanguage().size();
    dynamicHeaders = new String[i];
    int j = 0;
    for (CountryLanguage count : countryLanguageSet) {
        System.out.println(count.getLanguage().getLanguageName());
        dynamicHeaders[j] = count.getLanguage().getLanguageName();
        j++;
    }
}

public void populateDynamicDataTable() {
    debugLogger.debug("populateDynamicDataTable:Enter");
    // Create <h:dataTable value="#{myBean.dynamicList}" var="dynamicItem">.
    HtmlDataTable dynamicDataTable = new HtmlDataTable();
    dynamicDataTable.setValueExpression(
            "value",
            createValueExpression(
                    "#                {relationBean.dynamicList}",
                    List.class));
    dynamicDataTable.setVar("dynamicItem");

    // Iterate over columns.
    for (int i = 0; i < dynamicHeaders.length; i++) {
        // Create <h:column>.
        HtmlColumn column = new HtmlColumn();
        dynamicDataTable.getChildren().add(column);
        // Create <h:outputText value="dynamicHeaders[i]"> for <f:facet
        // name="header"> of column.
        HtmlOutputText header = new HtmlOutputText();
        header.setValue(dynamicHeaders[i]);
        column.setHeader(header);
        HtmlInputText input = new HtmlInputText();
        column.getChildren().add(input);
    }
    dynamicDataTableGroup = new HtmlPanelGroup();
    dynamicDataTableGroup.getChildren().add(dynamicDataTable);
    debugLogger.debug("populateDynamicDataTable:Exit");
}

public HtmlPanelGroup getDynamicDataTableGroup() throws Exception {
    // This will be called once in the first RESTORE VIEW phase.
    if (dynamicDataTableGroup == null) {
        loadDynamicList(); // Preload dynamic list.
        populateDynamicDataTable(); // Populate editable datatable.
    }

    return dynamicDataTableGroup;
}

public List<List<String>> getDynamicList() {
    return dynamicList;
}

public void setDynamicList(List<List<String>> dynamicList) {
    this.dynamicList = dynamicList;
}

public void setDynamicDataTableGroup(HtmlPanelGroup dynamicDataTableGroup) {
    this.dynamicDataTableGroup = dynamicDataTableGroup;
}

public ValueExpression createValueExpression(String valueExpression,
        Class<?> valueType) {
    FacesContext facesContext = FacesContext.getCurrentInstance();
    return facesContext
            .getApplication()
            .getExpressionFactory()
            .createValueExpression(facesContext.getELContext(),
                    valueExpression, valueType);
}
public void loadDynamicList()引发异常{
int i=0;
dynamicList=新的ArrayList();
add(Arrays.asList(新字符串[]{“ID1”}));
existingCountryList=新建ArrayList();
字符串countryCode=“US”;
existingCountryList.add(getCountryService().getCountryByCode(
国家代码);
Country Country=getCountryService().getCountryByCode(countryCode);
countryLanguageSet=country.getCountryLanguage();
i=country.getCountryLanguage().size();
dynamicHeaders=新字符串[i];
int j=0;
for(CountryLanguage计数:countryLanguageSet){
System.out.println(count.getLanguage().getLanguageName());
dynamicHeaders[j]=count.getLanguage().getLanguageName();
j++;
}
}
public void populatedDynamicDataTable(){
debug(“populateDynamicDataTable:Enter”);
//创造。
HtmlDataTable dynamicDataTable=新的HtmlDataTable();
dynamicDataTable.setValueExpression(
“价值”,
createValueExpression(
“#{relationBean.dynamicList}”,
列表(类);
setVar(“dynamicItem”);
//在列上迭代。
for(int i=0;i
我得到了答案,我添加了一个for循环来检查

HtmlColumn column = new HtmlColumn();
    dynamicDataTable.getChildren().add(column);
    if(i==0){
        HtmlCommandButton commandButton=new HtmlCommandButton();
        commandButton.setValue("Delete");
        column.getChildren().add(commandButton);
        commandButton.setActionExpression(createActionExpression("#{relationBean.deleteRow}", String.class));
        }
    // Create <h:outputText value="dynamicHeaders[i]"> for <f:facet name="header"> of column.
    HtmlOutputText header = new HtmlOutputText();
    header.setValue(dynamicHeaders[i]);
    column.setHeader(header);
HtmlColumn column=newhtmlcolumn();
dynamicDataTable.getChildren().add(列);
如果(i==0){
HtmlCommandButton commandButton=新的HtmlCommandButton();
commandButton.setValue(“删除”);
column.getChildren().add(commandButton);
setActionExpression(createActionExpression(“#{relationBean.deleteRow}”,String.class));
}
//为列的类型创建。
HtmlOutText标头=新的HtmlOutText();
header.setValue(dynamicHeaders[i]);
column.setHeader(header);