2016-09-12 9 views
0

У меня есть следующие радиокнопок выбираемые DataTable:Радио кнопка выбора с primefaces

<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 метод бросает NullPointerException на линии System.out.println(reclamante.getNome());. У моего datatable есть атрибут rowKey, и я знаю, что он действителен, потому что он отображается в datatable.

Мне нужна командная кнопка за пределами datatable, потому что я намерен использовать другие типы данных внутри этого h:form.

ответ

0

Обнаружена проблема. На странице был тег <head> вместо <h:head>.