I'm trying to list items in a ui: repeat that is inside another, and I need to use the id of the outermost ui: repeat item as the parameter. But I can not do it because the following error is occurring:
java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Object;
UI: REPEAT
<ui:repeat var="itemRelato" value="#{livroOrdemController.relatos}"
varStatus="status">
<p:panel id="panelRelatos">
<h:outputLabel value="Data do Relato: "/>
<h:outputText value="#{itemRelato.dataOcorrencia}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
<br />
<h:outputLabel value="Tipo do Relato: "/>
<h:outputText value="#{itemRelato.tipoRelato.descricao}"/>
<br />
<h:outputLabel value="Fase da Obra: "/>
<h:outputText value="#{itemRelato.faseObraServico.descricao}"/>
<br />
<h:outputLabel value="Inicio da Fase: "/>
<h:outputText value="#{itemRelato.dataIncioFase}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
<br />
<h:outputLabel value="Términio da Fase: "/>
<h:outputText value="#{itemRelato.dataTerminioFase}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
<br />
<h:outputLabel value="Descrição: "/><br />
<h:outputText value="#{itemRelato.descricao}"/>
<br />
<b>
<h:outputLabel value="Retificações/Complementos: "/>
</b>
<ui:repeat var="itemRetificacao" value="#{livroOrdemController.recuperarRetificacoes(itemRelato.idRelato)}"
varStatus="statusRetificacao">
<li>
<h:outputText value="#{itemRetificacao.descricao}"/>
</li>
</ui:repeat>
<br />
<p:commandButton value="Retificar Relato"
update="#{livroOrdemController.componentes}"
onclick="dialogRetificacao.show();"
process="@this">
<f:setPropertyActionListener value="#{itemRelato}" target="#{livroOrdemController.relatoASerRetificado}"/>
</p:commandButton>
Controller Listing Method
public List<RetificacaoRelato> recuperarRetificacoes(Long idRelato) {
List<RetificacaoRelato> retificacoes = new ArrayList<RetificacaoRelato>();
Map<String, Object> params = new HashMap<String, Object>();
String queryRetificacoes = "SELECT rr.descricao FROM RetificacaoRelato rr "
+ "WHERE rr.relato_idrelato = :idrelato";
params.put("idrelato", idRelato);
List<Object[]> objects = objectDao.listPesqQuery(queryRetificacoes, params);
for (Object[] o : objects) {
RetificacaoRelato retificacaoRelatoTemp = new RetificacaoRelato();
retificacaoRelatoTemp.setDescricao((String) o[0]);
retificacoes.add(retificacaoRelatoTemp);
}
return retificacoes;
ListPesqQuery method
@Override
public List<T> listPesqQuery(String query, Map<String, Object> params) {
Query q = getEntityManager().createNativeQuery(query);
for (String chave : params.keySet()) {
q.setParameter(chave, params.get(chave));
}
return q.getResultList();
}