Get e Set

Pessoal, Quando entro no formulario, carrega o seguinte metodo

	public String novo(){
		destino = "UsuarioCadastrado";
		usuario = new Usuario();
		usuario.setEstatus(true);
		setTpbotao("Novo");
		
		return "usuario";
	}
	

Quando clico no botão salvar , o getTpbotao(), fica nulo e gostaria que reconhecesse o conteudo NOVO

	public String salvar(){
		FacesContext context = FacesContext.getCurrentInstance();
		String senha = usuario.getSenha();
		if (! senha.equals(confirmarsenha)){
			FacesMessage facesMessage = new FacesMessage("Erro: senha e confirmação da senha diferentes");
			context.addMessage(null, facesMessage);
			return null;
		}
		///if (tpbotao == "Novo") {
		if (getTpbotao() == "Novo") {
		    bdc.salvaruser(usuario);
		}
		
		return "UsuarioCadastrado";
		//return destino;
	}
	

Segue abaixo a rotina completa

package bean;

import java.util.List;

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

import dao.UsuarioRN;

import banco.BancoDeClientes;

import modelo.Cliente;
import modelo.Usuario;

@ManagedBean(name = "usuarioBean")
@RequestScoped
public class UsuarioBean {
	
	private Usuario usuario = new Usuario();
	BancoDeClientes bdc = new BancoDeClientes();
	private String confirmarsenha;
	private String destino;
	private String tpbotao;
	private List<Usuario> lista;
	
	


	public String novo(){
		destino = "UsuarioCadastrado";
		usuario = new Usuario();
		usuario.setEstatus(true);
		setTpbotao("Novo");
		
		return "usuario";
	}
	

	public String edit(){
		confirmarsenha = usuario.getSenha();
		tpbotao = "Editar";
		return "usuario";
	}
	
	public String active(){
		if (usuario.getEstatus()){
			  usuario.setEstatus(false);
		}else{
			usuario.setEstatus(true);
		}
		bdc.alteraruser(usuario);
		return null;
	}
	
	public String delete(){
		
		bdc.deleteuser(usuario);
		
		lista = null;
		
		return null;
	}
	
	public String salvar(){
		FacesContext context = FacesContext.getCurrentInstance();
		String senha = usuario.getSenha();
		if (! senha.equals(confirmarsenha)){
			FacesMessage facesMessage = new FacesMessage("Erro: senha e confirmação da senha diferentes");
			context.addMessage(null, facesMessage);
			return null;
		}
		///if (tpbotao == "Novo") {
		if (getTpbotao() == "Novo") {
		    bdc.salvaruser(usuario);
		}
		
		return "UsuarioCadastrado";
		//return destino;
	}
	
	public List<Usuario> getLista(){
		if (lista == null) {
			 UsuarioRN usuarioRN = new UsuarioRN();
			 lista = usuarioRN.listar();	
			   
		}
		return lista;
	}
	
	 public String getDestino() {
		return destino;
	}

	public void setDestino(String destino) {
		this.destino = destino;
	}

	public String getconfirmarsenha() {  
	        return confirmarsenha;  
	    }
	 
	    public void setconfirmarsenha(String confirmarsenha) {  
	        this.confirmarsenha = confirmarsenha;  
	    }  	 
	
   public Usuario getUsuario(){
       return usuario;
    }

    public void setUsuario (Usuario usuario){
       this.usuario = usuario;
    }     
    
	public String getTpbotao() {
		return tpbotao;
	}

	public void setTpbotao(String tpbotao) {
		this.tpbotao = tpbotao;
	}
	


}


<?xml version="1.0" encoding="ISO-8859-1" ?>
<html xmlns="http://www.w3.org/1999/xhtml"            
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
      <h:head>
         <title>
           Cadastro de Usuário
         </title>
      </h:head>
      
        <h:body>
        
           <h1> Cadastramento de Usuário</h1>
           <h:form id="cadastro">
                  <h:messages />
                  <h:inputHidden value="#{usuarioBean.usuario.idUsuario}" />
                  <h:inputHidden value="#{usuarioBean.usuario.estatus}" />
                  <h:inputHidden value="#{usuarioBean.destino}" />
                  <h:panelGrid columns="2">                
                  		<h:outputLabel value="Nome" for= "nome"/>
                  		<h:inputText 
                  		       id="nome" label="Nome" value="#{usuarioBean.usuario.nome}" 
                        	  size="45" maxlength="45" required="true"
                        	   
                        	  requiredMessage="Por favor, digite o nome"
                        	  validatorMessage="O nome deve conter entre 7 a 45">
                        	  
                        	  <f:validateLength minimum="7" maximum="45"></f:validateLength>
                      
                        </h:inputText>
                  
                  
                  		<h:outputLabel value="E-mail" for= "email"/>
                  		<h:panelGroup>
		                  		<h:inputText 
		                  		       id="email" label="E-mail" value="#{usuarioBean.usuario.email}" 
		                        	  size="70" maxlength="70" required="true" requiredMessage="Por favor, digite o e-mail" 
		                        	  validatorMessage="E-mail inválido">
		                        	  <f:validateRegex pattern="[a-zA-Z0-9\-\_\.]+@[a-zA-Z0-9\-\_\.]+"/>		                      
		                        </h:inputText>
                        </h:panelGroup>
                        
                    <h:outputLabel value="idioma" for="idioma" />
                    <h:selectOneMenu id="idioma" value="#{usuarioBean.usuario.idioma}">
                         <f:selectItem  itemValue="pt_BR" itemLabel="Português"/>
                         <f:selectItem  itemValue="en_US" itemLabel="Inglês"/>
                         <f:selectItem  itemValue="es_ES" itemLabel="Espanhol"/>
                    </h:selectOneMenu>    
                        
                        
               		<h:outputLabel value="Senha:" for= "senha"/>
                  		<h:inputSecret
                  		       id="senha" label="Senha" value="#{usuarioBean.usuario.senha}" 
                        	  size="15" maxlength="15" required="true" redisplay="true" />
                        	  
               		<h:outputLabel value="Confirmar Senha:" for= "confSenha"/>
                  		<h:inputSecret
                  		       id="confSenha" label="Confirmar Senha" value="#{usuarioBean.confirmarsenha}" 
                        	  size="15" maxlength="15" required="true" redisplay="true" />
                        	                          	  
                  </h:panelGrid>
                  <h:commandButton action="${usuarioBean.salvar}" value="Salvar" />
           
           
           </h:form>
      
        </h:body>

</html>

evandro, tenho duas observações para vcê.

1º Quando começei ler seu código, vi o teste:

  if (getTpbotao() == "Novo") {  
        bdc.salvaruser(usuario);  
    }   

Isso tá errado, igualdade de Strings são feitas através do método equals, ao ver isso já parei a leitura.

2º Qual a razão de você fazer um teste com esse valor getTpBotão ? Se seu método é chama-se “salvar” então ele deve “salvar” o objeto. Se uma classe deve seguir o principio da responsabilidade única, imagine um método. Repense sua abordagem.

Quanto a seu problema, isso é provavelmente um problema de escopo. Você não está iniciando essa variável (por ex,chamando esse seu método “novo”) e o valor está vindo nulo. Dê uma lida em escopos de objetos e veja como eles se comportam nessas situações.

a minha ideia é o seguinte: vou usar a mesma tela para incluir ou alterar entao minha ideia é fazer o seguinte

public String novo(){ destino = "UsuarioCadastrado"; usuario = new Usuario(); usuario.setEstatus(true); setTpbotao("Novo"); return "usuario"; }
public String edit(){
	confirmarsenha = usuario.getSenha();
	setTpbotao("edit");
	return "usuario";
}


public String salvar(){
	FacesContext context = FacesContext.getCurrentInstance();
	String senha = usuario.getSenha();
	if (! senha.equals(confirmarsenha)){
		FacesMessage facesMessage = new FacesMessage("Erro: senha e confirmação da senha diferentes");
		context.addMessage(null, facesMessage);
		return null;
	}
	if (getTpbotao() == "Novo") {
	    bdc.salvaruser(usuario);
	} else {
                 bdc.alteraruser(usuario);

           }

	
	return "UsuarioCadastrado";
	//return destino;
}

Não sei se fui claro, mas pode me ajudar ??

obrigado

Evandro

Como o luksrn já comentou, igualdades de Strings não são feitas deste modo.

/*
if (getTpbotao() == "Novo") {
		bdc.salvaruser(usuario);
	} 
Substituia por:
*/
if (getTpbotao().equalsIgnoreCase("novo") {
		bdc.salvaruser(usuario);
	} 

Evandro, se você quer fazer a mesma tela para cadastrar e editar há outros modos mais interessantes. Lembre-se, mantenha suas classes com responsabilidades bem definidas e métodos também bem definidos. Se você diz que um método salva, ele deve salvar. Atualize em outro método. Você pode controlar o que vai ser exibido em sua página através dos rendered dos componentes.

Olhe, o exemplo de fragmentos de código que tenho aqui que usa a mesma tela para cadastrar e editar… em especial o trecho das linhas 11-14 e 19 e 35-37


<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
     xmlns:p="http://primefaces.org/ui"
    template="/WEB-INF/template/template.xhtml">
  
  
<ui:define name="head">
  
    <f:metadata>
        <f:viewParam name="idUsuario" value="#{cadastroUsuarioMBean.entidade.id}"/>
        <f:event listener="#{cadastroUsuarioMBean.loadAfterSetViewParamId}" type="preRenderView"/>
    </f:metadata>
     
</ui:define>
  
...
    <p:panel header="#{cadastroUsuarioMBean.entidade.id == null ? 'Cadastrar usuário' : 'Editar usuário'}" id="panelCadastro">
     
     
            <h:form prependId="false">
                      
                <h:outputLabel value="CPF" for="cpf"/>
                <br/>
                <p:inputMask mask="99999999999" value="#{cadastroUsuarioMBean.entidade.cpf}" label="cpf" id="cpf" size="60" />
                <p:watermark for="cpf" value="Digite CPF do novo morador" /> 
                <br/>
                <p:message id="cpfMessage" for="cpf" />                  
                <br/>
                 

     ...             
                 
                <p:commandButton  action="#{cadastroUsuarioMBean.cadastrar}"  ajax="false"  value="Cadastrar" rendered="#{cadastroUsuarioMBean.entidade.id == null}" icon="ui-icon-circle-plus"  />
                <p:commandButton action="#{cadastroUsuarioMBean.atualizar}" ajax="false" value="Atualizar"  rendered="#{cadastroUsuarioMBean.entidade.id != null}" icon="ui-icon-refresh" />
                <p:commandButton action="list.jsf" value="Voltar para listagem" ajax="false" immediate="true" icon="ui-icon-arrowreturnthick-1-w"    />
            </h:form>
             
    </p:panel>   
     
    </ui:define>
     
</ui:composition>

Vê se isso te ajuda.