0

根据我的要求,我必须在 datattable 中显示行尾的删除按钮,但限制是仅显示第一行,而不是每一行。如何限制它

belwo 是我的数据表

<h:dataTable id="datatable"  value="#{relationBean.languageDTOList}" var="lang">
<h:column>
    <f:facet name="header"> Relation Type Name</f:facet>
    <h:outputText value="#{relationBean.relationName}" />
</h:column>
<h:column>
    <f:facet name="header"> Value</f:facet>
    <h:inputText />
</h:column>
<h:column>
    <f:facet name="header">language</f:facet>
    <h:outputText value="#{lang.languageName}" />
</h:column>
<h:column>
    <f:facet name="header"> Delete</f:facet>

    <p:commandLink rendered="" action="#{relationBean.deleteDataTable}" immediate="true" update="@form" process="@this">
                <h:graphicImage value="../images/delete.png"  />
                <f:setPropertyActionListener target="#{relationBean.deleteId}" value="#{var}" />
     </p:commandLink>
        </h:column>

Bean.java 显示 bean 的内容

public List<LanguageDTO> getLanguageDTOList() {
    System.out.println("RelationBean:getLanguageDTOList:Enter");
    CountryList = new ArrayList<Country>();
    try {
        CountryList.add(countryService.getCountryByCode(city));
        List<LanguageDTO> tempLangDTOlst=new ArrayList<LanguageDTO>();
        for (Country lang : CountryList) {
            LanguageDTO languageDTO = new LanguageDTO();
            for (CountryLanguage CLang : lang.getCountryLanguage()) {
                languageDTO =  new LanguageDTO();
                languageDTO.setLanguageName(CLang.getLanguage().getLanguageName());
                languageDTO.setLanguageCode(CLang.getLanguage().getLanguageCode());
                System.out.println(CLang.getLanguage().getLanguageName());
                tempLangDTOlst.add(languageDTO);
            }

        }
        setLanguageDTOList(tempLangDTOlst);
        System.out.println("languageDTOList :"+languageDTOList);

    } catch (Exception e) {
        e.printStackTrace();
    }
    //BeanUtils.copyProperties(tempLangDTO,languageDTOList);
    System.out.println("--------------------Start -------------");
    for (LanguageDTO iterable_element : languageDTOList) {
        System.out.println(iterable_element.getLanguageName());
    }
    System.out.println("-------------------- End -------------");
    System.out.println("RelationBean:getLanguageDTOList:Exit");
    return languageDTOList;
}
4

2 回答 2

2

通过 将绑定<h:dataTable>到视图binding,这将引用一个UIData组件实例,并在rendered属性中检查是否 UIData#getRowIndex()等于0

<h:dataTable binding="#{table}" ...>
    <h:column>
        <p:commandLink ... rendered="#{table.rowIndex eq 0}">

(注意:不要它绑定到像#{bean.table}!代码是完整的原样)

也可以看看:

于 2013-09-17T11:35:57.500 回答
1

您可以测试当前元素是否与列表的第一个元素相同:

<p:commandLink rendered="#{lang eq relationBean.languageDTOList.get(0)}"> ...

这只有在languageDTOList是 a时才有效List

如果您使用p:dataTable而不是标准 JSF DataTable,则可以使用该rowIndexVar变量来测试您是否处于第一次迭代中。

于 2013-09-17T08:11:41.260 回答