[RESOLVIDO] Retornar objeto + página bloqueada : Primefaces

Boa tarde pessoal.
Estou tentando selecionar um objeto de uma linha para exibição só que sem sucesso. Além de não retornar nada ainda deixa a página toda cinza.
Pelo código alguém saberia me dizer o que fiz de errado?

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.teste.dao;

import br.com.teste.conexao.ConnectionFactory;
import br.com.teste.modelo.Usuario;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

/**
*

  • @author 18122012
    */
    @ManagedBean(name = “usuarioDao”)
    @RequestScoped
    public class UsuarioDao {

    private Connection connection;
    private Usuario selectedUser;

    public UsuarioDao() {
    this.connection = new ConnectionFactory().getConnection();
    }

    public UsuarioDao(Connection connection) {
    this.connection = connection;
    }

    public List<Usuario> getLista() {
    List<Usuario> usuarios = new ArrayList<Usuario>();
    try {
    PreparedStatement pstmt = this.connection.prepareStatement(“select * from Usuario”);
    ResultSet rs = pstmt.executeQuery();
    while (rs.next()) {
    Usuario usuario = new Usuario();
    usuario.setNome(rs.getString(“nome”));
    usuario.setEmail(rs.getString(“email”));
    usuarios.add(usuario);
    }
    return usuarios;
    } catch (SQLException e) {
    throw new RuntimeException(e);
    }
    }

    public Usuario getSelectedUser() {
    return selectedUser;
    }
    }[/code]O formulário[code] <h:form id=“form” prependId=“false”>
    <p:dataTable id=“dataTable” var=“usuario” value="#{usuarioDao.lista}" paginator=“true” rows=“50” paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate=“5,10,15” resizableColumns=“true” liveResize=“true” draggableColumns=“true”>
    <p:column sortBy="#{usuario.nome}" style=“width: 100px” headerText=“Group”>
    <h:outputText value="#{usuario.nome}"/>
    </p:column>
    <p:column sortBy="#{usuario.email}" headerText=“Subgroup”>
    <h:outputText value="#{usuario.email}"/>
    </p:column>

                         &lt;p:column style="width:40px"&gt;  
                             &lt;p:commandButton id="selectButton" update=":form:display" oncomplete="carDialog.show()" icon="ui-icon-search" title="View"&gt;  
                                 &lt;f:setPropertyActionListener value="#{usuario}" target="#{usuarioDao.selectedUser}" /&gt;  
                             &lt;/p:commandButton&gt;  
                         &lt;/p:column&gt; 
    
                     &lt;/p:dataTable&gt; 
    
                     &lt;p:dialog header="Car Detail" widgetVar="carDialog" resizable="false" id="carDlg"  
                               showEffect="fade" hideEffect="explode" modal="true"&gt;  
                         &lt;h:panelGrid id="display" columns="2" cellpadding="4" style="margin:0 auto;"&gt;  
                             &lt;h:outputText value="Group:" /&gt;  
                             &lt;h:outputText value="#{usuarioDao.selectedUser.nome}" style="font-weight:bold"/&gt;  
                             &lt;h:outputText value="Subgroup:" /&gt;  
                             &lt;h:outputText value="#{usuarioDao.selectedUser.email}" style="font-weight:bold"/&gt;  
                         &lt;/h:panelGrid&gt; 
                     &lt;/p:dialog&gt; 
    
                 &lt;/h:form&gt;[/code]

[quote=Onimatsu]Boa tarde pessoal.
Estou tentando selecionar um objeto de uma linha para exibição só que sem sucesso. Além de não retornar nada ainda deixa a página toda cinza.
Pelo código alguém saberia me dizer o que fiz de errado?

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.teste.dao;

import br.com.teste.conexao.ConnectionFactory;
import br.com.teste.modelo.Usuario;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

/**
*

  • @author 18122012
    */
    @ManagedBean(name = “usuarioDao”)
    @RequestScoped
    public class UsuarioDao {

    private Connection connection;
    private Usuario selectedUser;

    public UsuarioDao() {
    this.connection = new ConnectionFactory().getConnection();
    }

    public UsuarioDao(Connection connection) {
    this.connection = connection;
    }

    public List<Usuario> getLista() {
    List<Usuario> usuarios = new ArrayList<Usuario>();
    try {
    PreparedStatement pstmt = this.connection.prepareStatement(“select * from Usuario”);
    ResultSet rs = pstmt.executeQuery();
    while (rs.next()) {
    Usuario usuario = new Usuario();
    usuario.setNome(rs.getString(“nome”));
    usuario.setEmail(rs.getString(“email”));
    usuarios.add(usuario);
    }
    return usuarios;
    } catch (SQLException e) {
    throw new RuntimeException(e);
    }
    }

    public Usuario getSelectedUser() {
    return selectedUser;
    }
    }[/code]O formulário[code] <h:form id=“form” prependId=“false”>
    <p:dataTable id=“dataTable” var=“usuario” value="#{usuarioDao.lista}" paginator=“true” rows=“50” paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate=“5,10,15” resizableColumns=“true” liveResize=“true” draggableColumns=“true”>
    <p:column sortBy="#{usuario.nome}" style=“width: 100px” headerText=“Group”>
    <h:outputText value="#{usuario.nome}"/>
    </p:column>
    <p:column sortBy="#{usuario.email}" headerText=“Subgroup”>
    <h:outputText value="#{usuario.email}"/>
    </p:column>

                         &lt;p:column style="width:40px"&gt;  
                             &lt;p:commandButton id="selectButton" update=":form:display" oncomplete="carDialog.show()" icon="ui-icon-search" title="View"&gt;  
                                 &lt;f:setPropertyActionListener value="#{usuario}" target="#{usuarioDao.selectedUser}" /&gt;  
                             &lt;/p:commandButton&gt;  
                         &lt;/p:column&gt; 
    
                     &lt;/p:dataTable&gt; 
    
                     &lt;p:dialog header="Car Detail" widgetVar="carDialog" resizable="false" id="carDlg"  
                               showEffect="fade" hideEffect="explode" modal="true"&gt;  
                         &lt;h:panelGrid id="display" columns="2" cellpadding="4" style="margin:0 auto;"&gt;  
                             &lt;h:outputText value="Group:" /&gt;  
                             &lt;h:outputText value="#{usuarioDao.selectedUser.nome}" style="font-weight:bold"/&gt;  
                             &lt;h:outputText value="Subgroup:" /&gt;  
                             &lt;h:outputText value="#{usuarioDao.selectedUser.email}" style="font-weight:bold"/&gt;  
                         &lt;/h:panelGrid&gt; 
                     &lt;/p:dialog&gt; 
    
                 &lt;/h:form&gt;[/code][/quote]
    

Tente usar o escopo de View ao inves de Request

[]'s

Certo consegui resolver o problema do objeto nulo com um set, no entanto, a página ainda continua bloqueada depois que mudei para viewscoped.
Talvez o problema esteja fora do formulário, segue abaixo o código completo da página:[code]<?xml version=‘1.0’ encoding=‘UTF-8’ ?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p=“http://primefaces.org/ui”>

&lt;f:view contentType="text/html"&gt;
    &lt;h:head&gt;
        &lt;f:facet name="first"&gt;
            &lt;meta content='text/html; charset=UTF-8' http-equiv="Content-Type"/&gt;
            &lt;title&gt;PrimeFaces&lt;/title&gt;
        &lt;/f:facet&gt;
    &lt;/h:head&gt;
    &lt;h:body&gt;
        &lt;p:layout fullPage="true"&gt;
            &lt;p:layoutUnit position="north" size="200" resizable="true" closable="true" collapsible="true"&gt;
                Header
                &lt;h:form&gt;
                    &lt;p:menuButton value="Add"&gt;
                        &lt;p:menuitem value="Entry"/&gt;  
                        &lt;p:menuitem value="Hierarchy"/&gt;
                    &lt;/p:menuButton&gt;
                    &lt;p:button value="Edity"&gt;&lt;/p:button&gt;
                    &lt;p:button value="Move"&gt;&lt;/p:button&gt;
                    &lt;p:button value="Delete"&gt;&lt;/p:button&gt;
                &lt;/h:form&gt;
            &lt;/p:layoutUnit&gt;
            &lt;p:layoutUnit position="south" size="100" closable="true" collapsible="true"&gt;
                Footer
            &lt;/p:layoutUnit&gt;
            &lt;p:layoutUnit position="west" size="275" header="Left" collapsible="true"&gt;
                &lt;p:menu&gt;
                    &lt;p:submenu label="Resources"&gt;
                        &lt;p:menuitem value="Demo" url="http://www.primefaces.org/showcase-labs/ui/home.jsf" /&gt;
                        &lt;p:menuitem value="Documentation" url="http://www.primefaces.org/documentation.html" /&gt;
                        &lt;p:menuitem value="Forum" url="http://forum.primefaces.org/" /&gt;
                        &lt;p:menuitem value="Themes" url="http://www.primefaces.org/themes.html" /&gt;
                    &lt;/p:submenu&gt;
                &lt;/p:menu&gt;
            &lt;/p:layoutUnit&gt;
            &lt;p:layoutUnit position="center"&gt;
                &lt;h:form id="form" prependId="false"&gt;
                    &lt;p:dataTable id="dataTable" var="usuario" value="#{usuarioDao.lista}" paginator="true" rows="50" paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="5,10,15" resizableColumns="true" liveResize="true" draggableColumns="true"&gt;
                        &lt;p:column sortBy="#{usuario.nome}" style="width: 100px" headerText="Group"&gt;
                            &lt;h:outputText value="#{usuario.nome}"/&gt;
                        &lt;/p:column&gt;
                        &lt;p:column sortBy="#{usuario.email}" headerText="Subgroup"&gt;
                            &lt;h:outputText value="#{usuario.email}"/&gt;
                        &lt;/p:column&gt; 

                        &lt;p:column style="width:40px"&gt;  
                            &lt;p:commandButton id="selectButton" update=":form:display" oncomplete="carDialog.show()" icon="ui-icon-search" title="View"&gt;  
                                &lt;f:setPropertyActionListener value="#{usuario}" target="#{usuarioDao.selectedUser}" /&gt;  
                            &lt;/p:commandButton&gt;  
                        &lt;/p:column&gt; 

                    &lt;/p:dataTable&gt; 

                    &lt;p:dialog header="Car Detail" widgetVar="carDialog" resizable="false" id="carDlg"  
                              showEffect="fade" hideEffect="explode" modal="true"&gt;  
                        &lt;h:panelGrid id="display" columns="2" cellpadding="4" style="margin:0 auto;"&gt;  
                            &lt;h:outputText value="Group:" /&gt;  
                            &lt;h:outputText value="#{usuarioDao.selectedUser.nome}" style="font-weight:bold"/&gt;  
                            &lt;h:outputText value="Subgroup:" /&gt;  
                            &lt;h:outputText value="#{usuarioDao.selectedUser.email}" style="font-weight:bold"/&gt;  
                        &lt;/h:panelGrid&gt; 
                    &lt;/p:dialog&gt; 

                &lt;/h:form&gt;
            &lt;/p:layoutUnit&gt;
        &lt;/p:layout&gt;
    &lt;/h:body&gt;
&lt;/f:view&gt;

</html>[/code]

Ja tentou colocar o dialog fora do form?

Uma vez tive um problema assim e na verdade o dialog aparecia fora da tela (tinha que usar as barras de rolagem para achá-lo).

Agora eu uso uma função javascript para centralizar o dialog, toda vez que ele -e mostrado (onshow)

Tentei colocar o dialog fora do form mas o problema persiste e o dialog não aparece fora da tela aparece bem no meio só que não é possível arrastar ou fechar.

Já investigou se não é algum erro que não está mostrando no console? Coloca um <h:messages /> abaixo do <h:form> do dialog para ver se mostra algum erro.

Depois de muita pesquisa descobri uma forma fácil de resolver o travamento, é só colocar appendToBody=“true” dentro do dialog fica aí a dica caso alguém passe pelo mesmo problema.
Agradeço a todos os colegas que ajudaram.

[quote=Onimatsu]Depois de muita pesquisa descobri uma forma fácil de resolver o travamento, é só colocar appendToBody=“true” dentro do dialog fica aí a dica caso alguém passe pelo mesmo problema.
Agradeço a todos os colegas que ajudaram.
[/quote]

Só uma duvida, com o appendToBody, ele adiciona o dialog a cada click do botão, não?
Não vai dar pau isso ai? Se o cara clicar e fechar o dialog 10x…

[]'s

Concordo com o leonhard32. Esse appendToBody=“true” ainda vai te dar dor de cabeça. Se não me engano, o problema é o p:layout do Primefaces. Ele não funciona muito bem quando temos diálogos modais, e outros componentes dinâmicos também.

Uma vez tentei implementar e tive tantos problemas que voltei para o velho ui:composite e pronto.

[quote=Roselito Fávero da Silva]Concordo com o leonhard32. Esse appendToBody=“true” ainda vai te dar dor de cabeça. Se não me engano, o problema é o p:layout do Primefaces. Ele não funciona muito bem quando temos diálogos modais, e outros componentes dinâmicos também.

Uma vez tentei implementar e tive tantos problemas que voltei para o velho ui:composite e pronto.[/quote]

++

Já tive problemas com o dialog também, quando estava usando como um modal, achei esse appendToBody e só piorou…

[]'s