Referencia de JSF com Bean

25 respostas
JJjava
Olá nao sei pq nao esta funcionando compila sem erro, roda mais nao exibe o valor. xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.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:p="http://primefaces.org/ui"> 

    <h:head>
        <title>Gerenciador de Livros</title>
    </h:head>
    <h:body>
       
        <h:outputText value="#(testeBean.nome)" />
       

    </h:body>
</html>
Bean
import javax.annotation.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean("testeBean")
@ViewScoped
/**
 *
 * @author Hudson
 */
public class TesteBean {

    private String nome;

    public TesteBean() {
        this.nome = "Hudson Schumaker";
    }

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }
}

retorna #(testeBean.nome)

alguma ideia ?

Grato.

25 Respostas

JJjava

achei um erro no .xhtml

[quote]

[code]
agora roda mais nao aparece nada

Grato.

tmvolpato

[quote=JJjava]achei um erro no .xhtml

[code]
agora roda mais nao aparece nada

Grato.

Aparece em branco?

JJjava

Êh não sai nada na tela. Creio q não esta fazendo referencia ao bean não sei pq

fabiozanardi

você está usando qual servidor de app, jsf e primefaces?

JJjava

estou usando o apache 7.0.XXX

JJjava

Estou usando o Netbeans 7.1.2 vou baixar o 7.2 completo… tinha visto q nao tem o arquivo faces-config.xml achei q era isso mais buscando na internet li que na versão 2.0 do JSF nao eh mais necessario

fabiozanardi

Tente rodar a app no jboss ou no glassfish só para ver se o erro persiste

já vi algumas pessoas tendo problemas rodando app em jsf/primefaces no tomcat

JJjava

vou tentar isso…

fabiozanardi

referente ao face-config.xml, eu normalmente crio o arquivo, embora não seja mais obrigatorio, tem algumas configurações que precisam ser colocadas nele.

como você não está utilizando CDI, o beans.xml não precisa ser criado.

qualquer duvida estamos ai

abraço

JJjava

Funcionou agora como glassfish…

JJjava

oq isso significa?

Advertência: Definindo valor de atributo não serializável em ViewMap (chave: TesteBean, classe do valor: TesteBean).

fabiozanardi

Agora é só você implementar serializable no bean:

@ManagedBean("testeBean")
@ViewScoped
public class TesteBean implements Serializable {

	private static final long serialVersionUID = 1L;

//resto do codigo
JJjava

aproveitando o topico como faço para validar o retorno de uma função do bean? para que possa fazer um forward para home.xhtml por exemplo e como fica a questao de sessoes?

Grato.

xhtml

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <link type="text/css" rel="stylesheet" href="themes/bluesky/skin.css" />
        <title> Login </title>
</h:head>
<h:body>
    <center>
        <p:panel header="Login form" style="width: 350;">
            <h:form>
                <h:panelGrid columns="2" cellpadding="2">
                    <h:outputLabel for="#{userManagedBean.username}" value="UserName"/>
                    <h:inputText value="#{userManagedBean.username}" label="UserName"></h:inputText>
                    <h:outputLabel for="#{userManagedBean.password}" value="Password"/>
                    <h:inputSecret value="#{userManagedBean.password}"></h:inputSecret>
                    <h:commandButton type="submit" value="Login" action="#{userManagedBean.login}"></h:commandButton>
                    
                </h:panelGrid>
            </h:form>
        </p:panel>
        <div><h:messages ></h:messages></div>
    </center>
</h:body>
</html>

bean

package user;

import java.util.Collection;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import org.primefaces.event.SelectEvent;
import org.primefaces.event.UnselectEvent;

@ManagedBean(name = "userManagedBean")
@ApplicationScoped
public class UserManagedBean {

    UserService userService = new UserService();
    private String username;
    private String password;
    private String searchUser;
    private Collection<User> searchUsersResults;
    private User selectedUser;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public User getSelectedUser() {
        if (selectedUser == null) {
            selectedUser = new User();
        }
        return selectedUser;
    }

    public void setSelectedUser(User selectedUser) {
        this.selectedUser = selectedUser;
    }

    public Collection<User> getSearchUsersResults() {
        return searchUsersResults;
    }

    public void setSearchUsersResults(Collection<User> searchUsersResults) {
        this.searchUsersResults = searchUsersResults;
    }

    public String getSearchUser() {
        return searchUser;
    }

    public void setSearchUser(String searchUser) {
        this.searchUser = searchUser;
    }

    public String login() {
        if ("test".equalsIgnoreCase(getUsername()) && "test".equals(getPassword())) {
            return "home";
        } else {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("username", new FacesMessage("Invalid UserName and Password"));
            return "login";
        }
    }

    public String searchUser() {
        String username = (this.searchUser == null) ? "" : this.searchUser.trim();
        this.searchUsersResults = userService.searchUsers(username);
        System.out.println(searchUsersResults);
        return "home";
    }

    public String updateUser() {
        userService.update(this.selectedUser);
        return "home";
    }

    public void onUserSelect(SelectEvent event) {
    }

    public void onUserUnselect(UnselectEvent event) {
    }
}
fabiozanardi

não entendi, que tipo de validação do retorno? e que problema tem com as sessões?

JJjava

fabiozanardi:
não entendi, que tipo de validação do retorno? e que problema tem com as sessões?

como vou pegar o retorno da função na chamada action="#{userManagedBean.login}" para fazer o foward

em relção a session quero saber se em JFS o uso e igual ao de JSF

fabiozanardi

a função login deve ter um retorno String

e o retorno da função deve ser:

return   "/caminho-do-arquivo/home.xhtml?faces-redirect=true

referente a session, não entendi ainda hehe

JJjava

Como e feito o gerenciamento das sessoes?

fabiozanardi

o SessionScoped dura até que seja invalidada por algum método, ou se voce fechar o navegador e abrir novamente

JJjava

Mais uma pergunta
quando quero dar um get a um valor do Bean uso

value="#{mail.subject}"

quando quero dar um set a um valor uso

binding="#{mail.subject}"

estou tendo problemas pq nao aceita String ai se uso HttpInputText na hora q dou o toString nele vai o endereço da memoria.,
Como resolvi isso?

fabiozanardi

o binding é muito custoso para a aplicação, evite utilizar ao máximo.

poste o erro do console para darmos uma olhada no erro que dá na hora de passar a String.

flw

JJjava

nao consigo ver o log do erro agora mais eh alguma coisa relacioan q nao podia converter HtmImputtext pata String
ai depois mudei no beans de string para HtmlImputtext so qu quando vou fazer alguam coisa tipo salva no banco ou usar o valor dessas variveis desse vem op endereço de memoria…

fabiozanardi

posta o xhtml e o bean

JJjava

xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<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:p="http://primefaces.org/ui"
      > 
    <h:head>
        <style type="text/css" >
            body { background-color: black; 
                   margin: 0; 
                   padding: 0; 
                   font-family: geneva, arial, helvetica, sans-serif; 
                   font-size:80%;
            } 
        </style>
        <title>Mail</title>
    </h:head>
    <h:body>
        <h:form>
            <p:growl showDetail="true" sticky="true"/>  
            <p:breadCrumb style=" font-family: geneva, arial, helvetica, sans-serif; font-size:80%;">  
                <p:menuitem value="Home"  url="home.xhtml"/>
                <p:menuitem value="Email" url="#"/>  
            </p:breadCrumb> 
            <h:panelGrid columns="2" cellpadding="5">  
                <h:outputLabel for="to" value="To:" />  
                <h:inputText binding="#{mail.to}" id="to" required="true" label="to" />  
                
                <h:outputLabel for="subject" value="Subject:" />  
                <h:inputText binding="#{mail.subject}" id="subject" required="false" label="subject" />  
                 <h:outputLabel for="message" value="Message:" />  
                <h:inputTextarea id="message" rows="10" cols="50" binding="#{mail.message}" />  

                <p:commandButton value="send" actionListener="#{mail.send()}" ajax="false" />  
            </h:panelGrid>           



            <p:dock>  
                <p:menuitem value="Home"  icon="/images/dock/home.png" url="home.xhtml"/>  
                <p:menuitem value="Docs" icon="/images/dock/docs.png" url="docs.xhtml"/>  
                <p:menuitem value="Photo" icon="/images/dock/photo.png" url="#"/>  
                <p:menuitem value="Music" icon="/images/dock/music.png" url="#"/>  
                <p:menuitem value="Video" icon="/images/dock/video.png" url="#"/>  
                <p:menuitem value="Email" icon="/images/dock/email.png" url="#"/>  
            </p:dock>

        </h:form>
    </h:body>
</html>

bean

package mail;


import java.util.Properties;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.html.HtmlInputText;
import javax.faces.component.html.HtmlInputTextarea;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 *
 * @author bp12214
 */
@ManagedBean(name = "mail")
@ViewScoped
public class SendMail {

    private String from;
    private HtmlInputText to;
    private HtmlInputText subject;
    private HtmlInputTextarea message;
    private String pass;

    public SendMail() {
        from = "xxxxxxx";
      
        pass = "xxxxxxx";
    }

//    public SendMail(String from, String to, String subject, String message) {
//        this.from = from;
//        this.to = to;
//        this.subject = subject;
//        this.message = message;
//        pass = "xxxxxx";
//    }
    public void send() {

        try {
            Properties props = new Properties();
            props.put("mail.smtp.host", ??????????????");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.port", "587");
            props.put("mail.smtp.starttls.enable", "true");
            Session s = Session.getDefaultInstance(props, new Autenticar(getFrom(), getPass()));
            MimeMessage email = new MimeMessage(s);
            InternetAddress de = new InternetAddress(getFrom());
            email.setFrom(de);

            InternetAddress para = new InternetAddress( String.valueOf(getTo().toString()));
            email.addRecipient(Message.RecipientType.TO, para);

            email.setSubject(getSubject().toString());
            email.setText(getMessage().toString());
            Transport.send(email);

        } catch (AddressException ex) {
            System.out.println("Adress: " + ex);
        } catch (MessagingException ex) {
            System.out.println("Message: " + ex);
        }
    }

    public String getFrom() {
        return from;
    }

    public void setFrom(String from) {
        this.from = from;
    }

    public HtmlInputText getTo() {
        return to;
    }

    public void setTo(HtmlInputText to) {
        this.to = to;
    }

    public HtmlInputText getSubject() {
        return subject;
    }

    public void setSubject(HtmlInputText subject) {
        this.subject = subject;
    }

    public HtmlInputTextarea getMessage() {
        return message;
    }

    public void setMessage(HtmlInputTextarea message) {
        this.message = message;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }

    
   
}

email
Delivery has failed to these recipients or groups:

javax.faces.component.html.HtmlInputText@3047dea7

JJjava

postei ai oq vc pediu…

fabiozanardi

tente fazer assim:

  1. Ao invés de binding="…" nos campos utilize value="#{mail.to}" e assim por diante nos outros campos

2.volte os atributos para String no managed bean

  1. no metodo do bean send(), coloque apenas 1 system.out.printline(variaveis) para os valores das variaveis e veja como chega no console. (comente o resto do codigo)

se não der certo da 1 toque

Criado 21 de setembro de 2012
Ultima resposta 28 de set. de 2012
Respostas 25
Participantes 3