Ola!!! Preciso criar uma tela de cadastro onde o usuario informa seus dados e os dados da empresa, caso a empresa não esteja
cadastrada ele tem que cadastra-la. Após o cadastro da empesa a lista que contem as mesmas deve ser atualizada ja mostrando a empresa
que ele cadastrou.
Para isso fiz dois forms, um dentro do outro… Na tab que contem os dados da empresa fiz tab view mostrando em abas, a aba que contem o form da nova empresa
possui um botão a parte para cadastrar só a empresa…
Segue o codigo
<h:formid="form1"prependId="true"><p:growlid="id"showDetail="true"life="3000"/><p:tabViewid="tabViewUsu"dynamic="true"cache="true"><p:tabid="usuario"title="Dados do Usuário"><h:panelGridcolumns="2"cellspacing="3"><h:outputTextvalue="Nome: *"/><h:inputTextid="nome"value="#{funcionarioBean.funcionario.nome}"required="true"requiredMessage="Campo Nome é Obrigatório"/><h:outputTextvalue="Sobrenome: *"/><h:inputTextid="sobrenome"value="#{funcionarioBean.funcionario.sobreNome}"required="true"requiredMessage="Campo Sobrenome é Obrigatório"/><h:outputTextvalue="Data Nasc.: *"/><h:inputTextid="dt"value="#{funcionarioBean.funcionario.nascimento}"required="true"requiredMessage="Campo Data de Nascimento é Obrigatório"/><h:outputTextvalue="Email: *"/><h:inputTextid="email"value="#{funcionarioBean.funcionario.email}"required="true"requiredMessage="Campo Email é Obrigatório"/><h:outputTextvalue="Telefone: *"/><h:inputTextid="tel"value="#{funcionarioBean.funcionario.telefone}"required="true"requiredMessage="Campo Telefone é Obrigatório"/></h:panelGrid></p:tab></p:tabView><br></br><p:tabViewid="tabViewLog"dynamic="true"cache="true"><p:tabid="idLogin"title="Dados de Login"><h:panelGridcolumns="2"cellspacing="3"><h:outputTextvalue="Usuário: *"/><h:inputTextid="login"value="#{funcionarioBean.funcionario.login}"required="true"requiredMessage="Campo Usuário é Obrigatório"/><h:outputTextvalue="Senha: *"/><h:inputSecretid="senha"value="#{funcionarioBean.funcionario.senha}"required="true"requiredMessage="Campo Senha é Obrigatório"/></h:panelGrid></p:tab></p:tabView><br></br><p:tabViewid="tabViewEmp"dynamic="true"cache="true"><!--**********************AbadadosSobreaEmpresa*********************************--><p:tabid="empresa"title="Dados da Empresa"><h:panelGridcolumns="2"cellspacing="9"><h:outputTextvalue="Empresa: *"/><h:selectOneMenuid="empresa2"required="true"value="#{cargoBean.idSelectEmpresa}"><f:selectItemitemValue="0"itemLabel="Selecione..."/><f:selectItemsvalue="#{empresaBean.listaEmpresa}"var="v"itemValue="#{v.idEmpresa}"itemLabel="#{v.nome}"/><f:ajaxevent="change"render="cargo"listener="#{cargoBean.carregaComboEmpresaCargo(event)}"/></h:selectOneMenu><h:outputTextvalue="Cargo: *"/><h:selectOneMenuid="cargo"value="#{cargoBean.idSelectCargo}"rendered="true"><f:selectItemsvalue="#{cargoBean.listaEmpresaCargo}"/></h:selectOneMenu></h:panelGrid></p:tab><!--**********************Abaparacriarnovaempresa|AQUICONTEMUMNOVOFORM*********************************--><p:tabtitle="Nova Empresa"rendered="true"><h:formid="formNovaEmpresa"prependId="true"><h:panelGridcolumns="4"cellspacing="3"><h:outputTextvalue="Empresa: *"/><h:inputTextid="nomeEmp"value="#{empresaBean.empresa.nome}"required="true"requiredMessage="Campo Nome é Obrigatório"/><h:outputTextvalue="CNPJ: *"/><h:inputTextid="cnpjEmp"value="#{empresaBean.empresa.cnpj}"required="true"requiredMessage="Campo CNPJ é Obrigatório"/><h:outputTextvalue="Email: *"/><h:inputTextid="emailEmp"value="#{empresaBean.empresa.email}"required="true"requiredMessage="Campo Email é Obrigatório"/><h:outputTextvalue="Cargos: *"/><h:inputTextid="CargoEmp"value="#{cargoBean.cargo.stringCargos}"required="true"requiredMessage="Cadastre pelo menos um cargo"/></h:panelGrid><br></br><h:outputTextvalue="obs.: Informe os cargos separados por vírgula. Ex.: Gerente,Supervisor,Analista... "/><br></br><br></br><p:commandButtonid="btn2"value="Cadastrar"disabled="#{empresaBean.showComponentes}"type="submit"action="#{empresaBean.novaEmpersa(e)}"ajax="false"/></h:form></p:tab></p:tabView><br></br><p:commandButtonid="btnO"value="Cadastrar"type="submit"actionListener="#{funcionarioBean.salvar(e)}"ajax="false"/></h:form>
O botão do form para cadastrar nova empresa não acessa o metodo, testei debugando… Já esse ultimo botao do form principal funciona perfeitamente,
testei a chamada do metodo do form interno no botao do metodo principal e também funcionou…
Bom, essa foi uma ideia que tive, porém se houver outra forma de fazer isso… Gostaria de opiniões e ajuda…
Ate mais
packageModel;importjava.io.Serializable;/** * * @author VIRTUALWEB */publicclassCargoimplementsSerializable{privateintidCargo;privateintidEmpresa;privateStringnomeCargo;privateEmpresaempresa;privateStringstringCargos="";//Recebe uma String contendo os cargos separados por virgula.publicEmpresagetEmpresa(){returnempresa;}publicvoidsetEmpresa(Empresaempresa){this.empresa=empresa;}publicintgetIdCargo(){returnidCargo;}publicvoidsetIdCargo(intidCargo){this.idCargo=idCargo;}publicintgetIdEmpresa(){returnidEmpresa;}publicvoidsetIdEmpresa(intidEmpresa){this.idEmpresa=idEmpresa;}publicStringgetNomeCargo(){returnnomeCargo;}publicvoidsetNomeCargo(StringnomeCargo){this.nomeCargo=nomeCargo;}publicStringgetStringCargos(){returnstringCargos;}publicvoidsetStringCargos(StringstringCargos){this.stringCargos=stringCargos;}}
jeanmalvessi
Não entendi por que criar um outro form… Não há necessidade para tal!
Hebert_Coelho
Não crie um form dentro do outro. Isso não é correto nem pelas regras de HTML básico.
O que você pode fazer é abrir um dialog com um form próprio e cadastrar os dados lá. E quando a ação finalizar, você atualiza todos os dados via Ajax.
oliveira_lb
Tentei fazer com dialog antes, porém ao clicar no botão que chamará o dialog ele exibe as mensagens de erro relacionando ao preenchimento de campos obrigatório
e nao exibe o dialog…
jeanmalvessi
oliveira_lb:
Tentei fazer com dialog antes, porém ao clicar no botão que chamará o dialog ele exibe as mensagens de erro relacionando ao preenchimento de campos obrigatório
e nao exibe o dialog…
Estava tentando enviar o formulário. Provavelmente o process do seu botão estava apontando para o lugar errado… Se quiser tentar novamente, pode fazer e postar pra nós vermos
Hebert_Coelho
oliveira_lb:
Tentei fazer com dialog antes, porém ao clicar no botão que chamará o dialog ele exibe as mensagens de erro relacionando ao preenchimento de campos obrigatório
e nao exibe o dialog…
Você estava chamando a Dilog por ajax? O botão que chamada o Dialog estava com imediate=true ?
jeanmalvessi
Outra coisa, o type padrão do p:commandButton é “submit”. Portanto não há necessidade de informar
oliveira_lb
Refiz aqui, ficou mais ou menos assim
<p:tabtitle="Nova Empresa"rendered="true"><p:commandButtonid="basic"value="Cadastrar"onclick="dlg1.show();"type="button"/></p:tab><p:dialogid="basicDialog"header="Basic Dialog"widgetVar="dlg1"><h:formid="form2"><h:panelGridcolumns="4"cellspacing="3"><h:outputTextvalue="Empresa: *"/><h:inputTextid="nomeEmp"value="#{empresaBean.empresa.nome}"required="true"requiredMessage="Campo Nome é Obrigatório"/><h:outputTextvalue="CNPJ: *"/><h:inputTextid="cnpjEmp"value="#{empresaBean.empresa.cnpj}"required="true"requiredMessage="Campo CNPJ é Obrigatório"/><h:outputTextvalue="Email: *"/><h:inputTextid="emailEmp"value="#{empresaBean.empresa.email}"required="true"requiredMessage="Campo Email é Obrigatório"/><h:outputTextvalue="Cargos: *"/><h:inputTextid="CargoEmp"value="#{cargoBean.cargo.stringCargos}"required="true"requiredMessage="Cadastre pelo menos um cargo"/><br></br><h:outputTextvalue="obs.: Informe os cargos separados por vírgula. Ex.: Gerente,Supervisor,Analista... "/><br></br><p:commandButtonid="btn2"value="Cadastrar"type="submit"actionListener="#{empresaBean.salvar(e)}"ajax="false"/></h:panelGrid></h:form></p:dialog>
Parou de exibir as mensagens porém o dialog não é aberto
oliveira_lb
Retirei o type do botão que chama o dialog, as mensagens de preenchimento de campos obrigatórios voltaram a aparecer e o dialog continua
nao abrindo.
O botão sumiu ficando apenas uma linha fininha com possibilidade de seleção, ao clicar exibe o erro:
Não é possível encontrar o componente com "form2" identificador em vista.
jeanmalvessi
Tenta agora: process=":form2"
oliveira_lb
O botão apareceu porém ao clicar ainda exibe as msg…
Pensei em alterar o tipo do botão para <p:commandLink assim crio uma página de cadastro separado.
A ideia é o usuário chamar esta nova pagina, cadastrar e depois através de outro link voltar a pagina de cadastro.
Seria viável? o problema é ir e voltar deixando os campos anteriores do cadastro principal ainda preenchidos…;
oliveira_lb
Não sei se tem alguma coisa a ver, mais tentei colocar um mask em um campo input e o mesmo também não funcionou.
Será que meu sistema está com BUG?
jeanmalvessi
O botão apareceu porém ao clicar ainda exibe as msg…
Pensei em alterar o tipo do botão para <p:commandLink assim crio uma página de cadastro separado.
A ideia é o usuário chamar esta nova pagina, cadastrar e depois através de outro link voltar a pagina de cadastro.
Seria viável? o problema é ir e voltar deixando os campos anteriores do cadastro principal ainda preenchidos…;
Uma troca de página seria um transtorno ainda maior.
Se puder, poste o método salvar() pra eu dar uma olhada!
oliveira_lb
Esse parâmetro process=":form2" eu o coloquei no botão que chama o dialog e não no botão que esta dentro do dialog… Tem algo a ver???
Quanto ao botão citado acima a ação dele nem chega a ser executa por o dialog não abre o form. Repare que o botão do form principal, o de cadastro dos dados também
possui o mesmo parâmetro no método salvar.
eis o método
public void salvar(ActionEvent e) throws ParseException, SQLException {
dao.Salvar(empresa);
}
Este método funcionar, testei ele através do mesmo botão porém em área diferente do form, se eu não passar o parâmetro (e) ele não reconhece o método.
jeanmalvessi
O botão de Gravar deve obrigatoriamente processar o formulário a que se refere, para poder mandar as informações ao bean. Tente fazer isso dentro do dialog e veja se o método salvar é chamado
oliveira_lb
Nao deu...
Segue a pagina xhtml com as atualizações que fiz
<h:formid="form1"prependId="false"><p:growlid="id"showDetail="true"life="4000"/><p:tabViewid="tabViewUsu"dynamic="true"cache="true"><p:tabid="usuario"title="Dados do Usuário"><h:panelGridcolumns="2"cellspacing="3"><h:outputTextvalue="Nome: *"/><h:inputTextid="nome"value="#{funcionarioBean.funcionario.nome}"required="true"requiredMessage="Campo Nome é Obrigatório"/><h:outputTextvalue="Sobrenome: *"/><h:inputTextid="sobrenome"value="#{funcionarioBean.funcionario.sobreNome}"required="true"requiredMessage="Campo Sobrenome é Obrigatório"/><h:outputTextvalue="Data Nasc.: *"/><h:inputTextid="dt"value="#{funcionarioBean.funcionario.nascimento}"required="true"requiredMessage="Campo Data de Nascimento é Obrigatório"/><h:outputTextvalue="Email: *"/><h:inputTextid="email"value="#{funcionarioBean.funcionario.email}"required="true"requiredMessage="Campo Email é Obrigatório"/><h:outputTextvalue="Telefone: *"/><h:inputTextid="tel"value="#{funcionarioBean.funcionario.telefone}"required="true"requiredMessage="Campo Telefone é Obrigatório"/></h:panelGrid></p:tab></p:tabView><br></br><p:tabViewid="tabViewLog"dynamic="true"cache="true"><p:tabid="idLogin"title="Dados de Login"><h:panelGridcolumns="2"cellspacing="3"><h:outputTextvalue="Usuário: *"/><h:inputTextid="login"value="#{funcionarioBean.funcionario.login}"required="true"requiredMessage="Campo Usuário é Obrigatório"/><h:outputTextvalue="Senha: *"/><h:inputSecretid="senha"value="#{funcionarioBean.funcionario.senha}"required="true"requiredMessage="Campo Senha é Obrigatório"/></h:panelGrid></p:tab></p:tabView><br></br><p:tabViewid="tabViewEmp"dynamic="true"cache="true"><!--**********************AbadadosSobreaEmpresa*********************************--><p:tabid="empresa"title="Dados da Empresa"><h:panelGridcolumns="2"cellspacing="9"><h:outputTextvalue="Empresa: *"/><h:selectOneMenuid="empresa2"required="true"value="#{cargoBean.idSelectEmpresa}"><f:selectItemitemValue="0"itemLabel="Selecione..."/><f:selectItemsvalue="#{empresaBean.listaEmpresa}"var="v"itemValue="#{v.idEmpresa}"itemLabel="#{v.nome}"/><f:ajaxevent="change"render="cargo"listener="#{cargoBean.carregaComboEmpresaCargo(event)}"/></h:selectOneMenu><h:outputTextvalue="Cargo: *"/><h:selectOneMenuid="cargo"value="#{cargoBean.idSelectCargo}"rendered="true"><f:selectItemsvalue="#{cargoBean.listaEmpresaCargo}"/></h:selectOneMenu></h:panelGrid></p:tab><!--**********************AbadadosSobreaEmpresa*********************************--><p:tabtitle="Nova Empresa"rendered="true"><p:commandButtonid="basic"value="Cadastrar"onclick="dlg1.show();"process=":form2"/></p:tab></p:tabView><br></br><p:commandButtonid="btnO"value="Cadastrar"type="submit"actionListener="#{funcionarioBean.salvar(e)}"ajax="false"update="id"process=":form2"/></h:form><!--Dialogdecriaçãodeumanovaempresa--><p:dialogid="basicDialog"header="Cadastro de Empresas"widgetVar="dlg1"><h:formid="form2"><h:panelGridcolumns="4"cellspacing="3"><h:outputTextvalue="Empresa: *"/><h:inputTextid="nomeEmp"value="#{empresaBean.empresa.nome}"required="true"requiredMessage="Campo Nome é Obrigatório"/><h:outputTextvalue="CNPJ: *"/><h:inputTextid="cnpjEmp"value="#{empresaBean.empresa.cnpj}"required="true"requiredMessage="Campo CNPJ é Obrigatório"/><h:outputTextvalue="Email: *"/><h:inputTextid="emailEmp"value="#{empresaBean.empresa.email}"required="true"requiredMessage="Campo Email é Obrigatório"/><h:outputTextvalue="Cargos: *"/><h:inputTextid="CargoEmp"value="#{cargoBean.cargo.stringCargos}"required="true"requiredMessage="Cadastre pelo menos um cargo"/><br></br><h:outputTextvalue="obs.: Informe os cargos separados por vírgula. Ex.: Gerente,Supervisor,Analista... "/><br></br><p:commandButtonid="btn2"value="Cadastrar"actionListener="#{empresaBean.salvar(e)}"ajax="false"process=":form2"/></h:panelGrid></h:form></p:dialog>
jeanmalvessi
Tire o process=":form2" deste botão.
<!-- **********************Aba dados Sobre a Empresa ********************************* -->
<p:tab title="Nova Empresa" rendered="true">
<p:commandButton id="basic" value="Cadastrar" onclick="dlg1.show();" process=":form2" />
</p:tab>
jeanmalvessi agradeço demais sua ajuda , achei o problema aqui…
No inicio da pagina fiz link para alguns arquivos javascripts e estes arquivos entraram em conflito com o restante do código.
Retirei os links e tudo funcionou perfeitamente inclusiva o mask nos campos input…