带素数面的单选按钮选择

时间:2016-09-12 20:12:01

标签: java jsf primefaces datatable

我有以下单选按钮可选数据表:

<h:form>

        <p:dataTable value="#{gerarDocumentoBacking.reclamantes}"
                     selection="#{gerarDocumentoBacking.reclamante}" var="re" rowKey="#{re.id}">
            <p:column headerText="Id">
                <h:outputText value="#{re.id}"/>
            </p:column>
            <p:column headerText="Relamantes">
                <h:outputText value="#{re.nome}"/>
            </p:column>
            <p:column selectionMode="single"/>
        </p:dataTable>


        <p:commandButton value="Gerar" action="#{gerarDocumentoBacking.gerar}"/>
</h:form>

按预期显示所有行和单选按钮。但是,它未按照reclamante属性中的规定设置selection=变量。

setReclamante方法可用且公开:

@Named
@ViewScoped
public class GerarDocumentoBacking implements Serializable {

private static final long serialVersionUID = 1L;
private List<Reclamante> reclamantes;
private Reclamante reclamante;

@EJB
private ReclamanteService reclamanteService;

@PostConstruct
public void init() {
    reclamantes = reclamanteService.listar();
}

public String gerar() {
    System.out.println(reclamante.getNome());
    return null;
}

public Reclamante getReclamante() {
    return reclamante;
}

public void setReclamante(Reclamante reclamante) {
    this.reclamante = reclamante;
}
...

使用一些IDE调试,我可以看到使用空值调用setReclamante方法,因此我的gerar方法在行System.out.println(reclamante.getNome());处抛出NullPointerException。我的数据表有rowKey属性,我知道它有效,因为它在数据表中显示。

我需要数据表外的命令按钮,因为我打算在h:form中使用其他数据表。

1 个答案:

答案 0 :(得分:0)

发现问题。该网页包含<head>标记,而不是<h:head>