Erro selection ao exibir os dados no inputText

Bom dia gente

Estou com um problema, quando clico em “Mostrar produto” que ele abre o “dialog”, quando adiciono a linha <p:inputText size=“20” Value="#categoriaBean.selected.nome}"/>

Da erro e não pega a informação que está no selected e aparece o erro dizendo que está null… Quando retiro essa linha so deixo as outras funciona normalmente.

O que pode está acontecer?

Obrigado ae.

			<h:form id="frmBrowser">
				<p:dataTable value="#{categoriaBean.categoriaList}" var="cat"
					selection="#{categoriaBean.selected}" selectionMode="single"
					rowKey="#{cat.idCategoria}"
					emptyMessage="Nenhum produto encontrado!" style="margin-top: 5px;">

					<p:column id="campoidcategoria" sortBy="#{cat.idCategoria}"
						filterBy="#{cat.idCategoria}" style="width: 0%">
						<f:facet name="header">
							<h:outputText value="Código" />
						</f:facet>
						<h:outputText value="#{cat.idCategoria}" />
					</p:column>

					<p:column id="campocategoria" sortBy="#{cat.nome}"
						filterBy="#{cat.nome}" style="width: 0%">
						<f:facet name="header">
							<h:outputText value="Categoria" />
						</f:facet>
						<h:outputText value="#{cat.nome}" />
					</p:column>

					<p:column id="campoidcatsup" sortBy="#{cat.descricao}"
						filterBy="#{cat.descricao}" style="width: 0%">
						<f:facet name="header">
							<h:outputText value="Categoria Superior" />
						</f:facet>
						<h:outputText value="#{cat.descricao}" />
					</p:column>


					<f:facet name="footer">
						<p:commandButton id="viewButton" value="Mostrar produto"
							icon="ui-icon-search" update=":frmBrowser:display"
							oncomplete="productDialog.show()" />
					</f:facet>


				</p:dataTable>

				<p:dialog id="dialog" header="Produto selecionado"
					widgetVar="productDialog" resizable="false" width="400"
					showEffect="clip" hideEffect="fold">

					<h:panelGrid id="display" columns="2" cellpadding="4">


						<h:outputText value="Nome:" />
						<h:outputText value="#{categoriaBean.selected.idCategoria}" />

						<h:outputText value="Teste:" />
						<p:inputText size="20" Value="#{categoriaBean.selected.nome}"/>

						<h:outputText value="Descri&ccedil;&atilde;o:" />
						<h:outputText value="#{categoriaBean.selected.nome}" />

						<h:outputText value="Pre&ccedil;o:" />
						<h:outputText value="#{categoriaBean.selected.descricao}" />

					</h:panelGrid>
				</p:dialog>
			</h:form>

Consegui resolver o problema de aparecer o que seleciono, coloquei o comando seguinte abaixo do datatable:

<p:ajax event="rowSelect" update=":frmBrowser:dialog" />

Porem ele está aparecendo o erro seguinte mesmo aparecendo o campo preenchido:

WARNING: /categoria/consulta.xhtml @89,70 value="#{categoriaBean.selected.nome}": Target Unreachable, 'selected' returned null
javax.el.PropertyNotFoundException: /categoria/consulta.xhtml @89,70 value="#{categoriaBean.selected.nome}": Target Unreachable, 'selected' returned null

Prezado,

Já fiz algo do tipo, assim:

<p:commandButton id="viewButton" value="Mostrar produto" icon="ui-icon-search" update=":frmBrowser:display" oncomplete="productDialog.show()">
      <f:setPropertyActionListener value="#{cat}" target="#{categoriaBean.selected}" />
</p:commandButton>

se fizer por ajax:

<p:ajax event="rowSelect" update=":frmBrowser:dialog" listener="#{categoriaBean.minhaFuncao}" />

...
<p:dialog id="dialog" header="Produto selecionado"   
        widgetVar="productDialog" resizable="false" width="400"   
        showEffect="clip" hideEffect="fold">   
  
        <h:panelGrid id="display" columns="2" cellpadding="4">

            <h:outputText value="Nome:" />   
            <h:outputText value="#{categoriaBean.selected.idCategoria}" />   
  
            <h:outputText value="Teste:" />   
            <p:inputText size="20" Value="#{categoriaBean.testeNome}"/>   
  
...

onde:

public void minhaFuncao(SelectEvent se) {   
     this.testeNome = ((MinhaCategoria) se.getObject()).getNome())
} 

[]'s

Tentei aqui, mas o erro continua.

Vê se te ajuda:

XHTML

<h:form id="princ">
			<table width="900">
				<tr>
					<td align="left" valign="top" width="900">
						<p:panel header="Relação de Exames" style="width:800px;">
							<p:dataTable id="exames" var="exame" value="#{exameBean.listagem}" selection="#{exameBean.dado}" selectionMode="single" rowKey="#{exame.idAtendExame}">
								<p:ajax event="rowSelect" listener="#{exameBean.actionSelecLinha}" update=":princ:detalhes1,:princ:detalhes2" oncomplete="dlg.show()" />
								
								<p:column headerText="Exame">#{exame.nomExame}</p:column>
								<p:column headerText="Valor">#{exame.valor}</p:column>
								<p:column headerText="Observacao">#{exame.observacao}</p:column>
								<p:column headerText="Divulga">#{exame.divulga}</p:column>
							</p:dataTable>
						</p:panel>
					</td>
				</tr>
			</table>
			<p:dialog header="Detalhamento" widgetVar="dlg" modal="true" showEffect="fade">
				<p:outputPanel id="detalhes1" style="text-align:left;" layout="block">
					<h:panelGrid columns="2" cellpadding="5" id="detalhes2">
						<h:inputHidden value="#{exameBean.dado.idAtendExame}" />
						<h:inputHidden value="#{exameBean.dado.idAtend}" />
						
						<h:outputLabel value="Nome" />
						<h:outputText value="#{exameBean.dado.nomExame}" />
						
						<h:outputLabel value="Valor" />
						<p:inputText value="#{exameBean.valor}" size="10" maxlength="10" disabled="#{exameBean.mostra}" />
						
						<h:outputLabel value="Observacao" />
						<p:inputText value="#{exameBean.observacao}" size="10" maxlength="50" />
						
						<h:outputLabel value="Divulga" />
						<p:selectOneRadio value="#{exameBean.divulga}">
							<f:selectItem itemLabel="Sim" itemValue="S" />
							<f:selectItem itemLabel="Não" itemValue="N" />
						</p:selectOneRadio>
						<p:commandButton value="Atualizar" actionListener="#{exameBean.actionAtualizar}" update=":princ:exames" oncomplete="dlg.hide()" />
						<p:commandButton value="Sair" onclick="dlg.hide()" />
					</h:panelGrid>
				</p:outputPanel>  
			</p:dialog>
		</h:form>

BEAN:

@ManagedBean(name="exameBean")
@ViewScoped
public class ExameBean {

	private List<AtendExameTo> lista;
	private AtendExameTo dado;
	private String valor;
	private String observacao;
	private String divulga;
	private ExameDataModel listagem;
	private boolean mostra;
	
	public List<AtendExameTo> getLista() {
		return lista;
	}
	public void setLista(List<AtendExameTo> lista) {
		this.lista = lista;
	}
	public AtendExameTo getDado() {
		return dado;
	}
	public void setDado(AtendExameTo dado) {
		this.dado = dado;
	}
	public String getValor() {
		return valor;
	}
	public void setValor(String valor) {
		this.valor = valor;
	}
	public String getObservacao() {
		return observacao;
	}
	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}
	public String getDivulga() {
		return divulga;
	}
	public void setDivulga(String divulga) {
		this.divulga = divulga;
	}
	public ExameDataModel getListagem() {
		return listagem;
	}
	public void setListagem(ExameDataModel listagem) {
		this.listagem = listagem;
	}
	public boolean isMostra() {
		return mostra;
	}
	public void setMostra(boolean mostra) {
		this.mostra = mostra;
	}
	
	public ExameBean() {
		AtendExameDao dao = null;
		lista = new ArrayList<AtendExameTo>();
		try {
			dao = new AtendExameDao();
			lista = dao.populaAtendExame();
			listagem = new ExameDataModel(lista);
			valor = "";
			observacao = "";
			divulga = "";
			mostra = false;
		} catch (Exception e) {
			System.out.println("erro : " + e.toString());
		}
	}
	
	public void actionSelecLinha(SelectEvent se) {
		valor = ((AtendExameTo)se.getObject()).getValor();
		observacao = ((AtendExameTo)se.getObject()).getObservacao();
		divulga = ((AtendExameTo)se.getObject()).getDivulga();
		if ("L".equals(((AtendExameTo)se.getObject()).getTipo())) {
			mostra = false;
		} else {
			mostra = true;
		}
	}
	
	public void actionAtualizar() {
		int i = Integer.parseInt(""+(dado.getIdAtendExame()-(long)1));
		lista.get(i).setValor(valor);
		lista.get(i).setObservacao(observacao);
		lista.get(i).setDivulga(divulga);
		listagem = new ExameDataModel(lista);
	}
		
}

DATAMODEL:

public class ExameDataModel extends ListDataModel<AtendExameTo> implements SelectableDataModel<AtendExameTo> {
	
	public ExameDataModel() {
	}
	
	public ExameDataModel(List<AtendExameTo> data) {
		super(data);
	}
	
	@SuppressWarnings("unchecked")
	@Override
	public AtendExameTo getRowData(String rowKey) {
		List<AtendExameTo> lista = (List<AtendExameTo>)getWrappedData();
		for (AtendExameTo to : lista) {
			if (to.getIdAtendExame().equals(rowKey.toString())) {
				return to;
			}
		}
		return null;
	}
	
	@Override
	public Object getRowKey(AtendExameTo to) {
		return to.getIdAtendExame().toString();
	}
	

}