andre.froes:
Lança o seu dialog (sem utilizar a tag form) dentro do formulário onde você está realizando a chamada dele. Se uma vez ele funciona, depois de adicioná-lo ao seu form e você der um update neste mesmo form, ele voltará a funcionar sem problemas.
cara, fiz desse jeito que você falou e continua sem funcionar..
se liga:
<h:form prependId="false" id="teste55">
<p:menubar autoSubmenuDisplay="false" styleClass="menuBar">
<p:submenu label="Solicitação" id="solicitacao" icon="ui-icon ui-icon-document">
<p:submenu label="Incluir" icon="ui-icon ui-icon-contact">
<p:menuitem value="Efetivação" onstart="dialogSolicitacao.show()" update="tbl, growl" />
<p:menuitem value="Levantamento" url="#" />
</p:submenu>
<p:submenu label="Consultar" icon="ui-icon ui-icon-contact">
<p:menuitem value="Efetivação" url="listaSolicitacaoEfet.xhtml"/>
<p:menuitem value="Levantamento" url="#"/>
</p:submenu>
</p:submenu>
<p:submenu label="Efetivação" icon="ui-icon ui-icon-pencil">
<p:menuitem value="Consultar" url="listaEfetivacoes.xhtml" onclick="statusDialog.show()"
onsuccess="statusDialog.hide()" />
</p:submenu>
<p:submenu label="Levantamento" icon="ui-icon ui-icon-pencil">
<p:menuitem value="Consultar" url="#" />
</p:submenu>
</p:menubar>
<p:dialog widgetVar="dialogSolicitacao" id="dlgsolicitacao" header="Solicitação" modal="true" showEffect="clip"
hideEffect="clip" minWidth="800">
<div id="conteudo23232" width="1008">
<p:tabView>
<p:tab title="Documentos" id="ptabDocumentos">
<h:outputLabel value="Arquivo:     " styleClass="Negrito"/>
<p:fileUpload fileUploadListener="#{solicitacoesBean.upload}"
label="Selecionar..." allowTypes="*.pdf;" description=".pdf"
auto="true" multiple="false" customUI="true" />
<br></br>
<h:outputLabel value="Tipo de Arquivo: " styleClass="Negrito"/>
<h:inputText disabled="#{solicitacoesBean.desativar}" id="tp_Arquivo222" value="#{solicitacoesBean.anexo1.tipo}" maxlength="15"/>
<br/><br/>
<h:outputLabel>        </h:outputLabel>
<p:commandButton disabled="#{solicitacoesBean.desativar}" value="Adiciona" action="#{solicitacoesBean.salvarAnexo}" update="tp_Arquivo222, tabelaAnexos2232"/>
<br/><br/>
<p:dataTable id="tabelaAnexos2232" value="#{solicitacoesBean.solicitacaoAnexoLista}"
var="anexoLista1" emptyMessage="Registro não encontrado.">
<p:column>
<f:facet name="header">
<h:outputText value="Tipo" />
</f:facet>
<h:outputText value="#{anexoLista1.tipo}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Data" />
</f:facet>
<h:outputText value="#{anexoLista1.data}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Matrícula" />
</f:facet>
<h:outputText value="#{anexoLista1.matricula}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Arquivo" />
</f:facet>
<h:outputLink value="#{'arqs/solicitEfetivacao/'}#{anexoLista1.nome}"
target="_blank">#{anexoLista1.nome}</h:outputLink>
</p:column>
</p:dataTable>
<br/>
</p:tab>
<p:tab title="Parecer" id="ptabParecer">
<h:inputTextarea disabled="#{solicitacoesBean.desativar}" id="PARECER" value="#{solicitacoesBean.objParecer}" style="width:955px;" />
<br/><br/>
<p:dataTable id="tabelaParecer2232" value="#{solicitacoesBean.parecerLista}"
var="parecerLista1" emptyMessage="Nenhum parecer cadastrado.">
<p:column>
<f:facet name="header">
<h:outputText value="Data" />
</f:facet>
<h:outputText value="#{parecerLista1.data}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Matrícula" />
</f:facet>
<h:outputText value="#{parecerLista1.matricula}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Parecer" />
</f:facet>
<h:outputText value="#{parecerLista1.parecer}" />
</p:column>
</p:dataTable>
</p:tab>
<p:tab title="Dados Gerais">
<h:outputLabel value="BBJUR" styleClass="Negrito"/>
<br/>
<h:inputText disabled="#{solicitacoesBean.desativar}" id="BBJUR" value="#{solicitacoesBean.solicitacao.bbjur}" maxlength="15" />
<!-- <p:commandButton value="Testar" action="{solicitacoesBean.buscarUmBbjur}" /> -->
<br/><br/>
<h:outputLabel value="Valor" styleClass="Negrito" />
<br/>
<h:inputText disabled="#{solicitacoesBean.desativar}" id="Valor" value="#{solicitacoesBean.solicitacao.valor}" maxlength="20" />
<br/><br/>
<h:outputLabel value="Tipo" styleClass="Negrito"/>
<br/>
<h:selectOneRadio disabled="#{solicitacoesBean.desativar}" id="RADIO_TIPO" value="#{solicitacoesBean.solicitacao.tipo}">
<f:selectItem itemLabel="Trabalhista" itemValue="Trabalhista" id="rad1" />
<f:selectItem itemLabel="Não Trabalhista" itemValue="Não Trabalhista" id="rad2" />
</h:selectOneRadio>
<br/>
<h:outputLabel value="Finalidade" styleClass="Negrito"/>
<br/>
<h:selectOneRadio disabled="#{solicitacoesBean.desativar}" id="RADIO_FINALIDADE" value="#{solicitacoesBean.solicitacao.finalidade}">
<f:selectItem itemLabel="Garantia" itemValue="Garantia" />
<f:selectItem itemLabel="Pagamento" itemValue="Pagamento" />
</h:selectOneRadio>
<br/>
<h:outputLabel value="Modalidade" styleClass="Negrito" />
<br/>
<h:selectOneMenu disabled="#{solicitacoesBean.desativar}" value="#{solicitacoesBean.modalidade.id}">
<f:selectItems value="#{solicitacoesBean.modalidades}" var="modt"
itemValue="#{modt.id}" itemLabel="#{modt.nome}" />
</h:selectOneMenu>
<br/><br/>
</p:tab>
</p:tabView>
<br/><br/>
<h:outputText value="Status atual: " />
<h:outputText value="#{solicitacoesBean.solicitacaoStatus.status.nomeStatus}" /><br />
<h:selectOneMenu disabled="#{solicitacoesBean.desativar}" value="#{solicitacoesBean.status.id}">
<f:selectItem itemLabel="Selecione..."/>
<f:selectItems value="#{solicitacoesBean.listaStatus}" var="status"
itemValue="#{status.id}" itemLabel="#{status.nomeOpcao}" />
<f:ajax event="change" listener="#{solicitacoesBean.selecionaOpcao}" render="slDependencias" />
</h:selectOneMenu>
<br/><br/>
<h:selectOneMenu id="slDependencias"
value="solicitacoesBean.solicitacao.prefResponsavel">
<f:selectItem itemLabel="Selecione..."/>
<f:selectItems value="#{solicitacoesBean.listaDependencias}" var="relDependencias"
itemValue="#{relDependencias.prefixo}"
itemLabel="#{relDependencias.prefixo} #{relDependencias.nome}" />
</h:selectOneMenu><br /><br />
<h:outputLabel value="Agência Interessada" styleClass="Negrito" /><br/>
<h:inputText disabled="#{solicitacoesBean.desativar}" id="AG_INTERESSADA" value="#{solicitacoesBean.solicitacao.agInteressada}" maxlength="4"/>
<div id="botoes">
<p:commandButton value="Salvar" disabled="#{solicitacoesBean.desativar}"
action="#{solicitacoesBean.salvar}" oncomplete="dialogSolicitacao.hide()" update="growl, teste55" >
<!-- <p:ajax event="click" /> -->
</p:commandButton>
</div>
<p:growl id="growl" showDetail="false" life="30000" />
</div>
</p:dialog>
</h:form>
agora da primeira vez ele salva perfeitamente, na outra ele não consegue mais salvar.. os campos de dentro do dialog continuam com os valores da última vez..
no bean ta assim:
public void salvar() throws IOException {
parecerDao = new SolicitacaoParecerDAO();
solicitacaoDao = new SolicitacoesDAO();
parecer = new SolicitacaoParecer();
solicitacaoStatus = new SolicitacaoStatus();
modDao = new ModalidadesDAO();
solicitacao.setModalidade(modDao.findById(modalidade.getId(),false));
solicitacao.setMatricula(usuarioVO.getChave());
solicitacao.setPrefOrigem(usuarioVO.getCodDependencia());
if (objParecer!="") {
if (objParecer.length()>4) {
if (solicitacaoAnexoLista.size()>0){
//if (status.getId()==0) {
solicitacaoDao.merge(solicitacao);
parecer.setSolicitacao(solicitacao);
parecer.setParecer(objParecer);
parecer.setMatricula(usuarioVO.getChave());
teste = modalidade.getId();
parecerDao.makePersistent(parecer);
//STATUS
solicitacaoStatus.setSolicitacao(solicitacao);
solicitacaoStatus.setStatus(status);
solicitacaoStatus.setMatricula(usuarioVO.getChave());
solicitacaoStatus.setPrefixo(usuarioVO.getCodDependencia());
solicitacaoStatusDao.makePersistent(solicitacaoStatus);
solicitacaoStatus = new SolicitacaoStatus();
solicitacao.setPrefResponsavel(null);
solicitacao = new Solicitacoes();
parecer = new SolicitacaoParecer();
modalidade = new Modalidades();
status = new Status();
solicitacaoAnexoLista = new List<SolicitacaoAnexo>() {
@Override
public <T> T[] toArray(T[] a) {
// TODO Auto-generated method stub
return null;
}
@Override
public Object[] toArray() {
// TODO Auto-generated method stub
return null;
}
@Override
public List<SolicitacaoAnexo> subList(int fromIndex, int toIndex) {
// TODO Auto-generated method stub
return null;
}
@Override
public int size() {
// TODO Auto-generated method stub
return 0;
}
@Override
public SolicitacaoAnexo set(int index, SolicitacaoAnexo element) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean retainAll(Collection<?> c) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean removeAll(Collection<?> c) {
// TODO Auto-generated method stub
return false;
}
@Override
public SolicitacaoAnexo remove(int index) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean remove(Object o) {
// TODO Auto-generated method stub
return false;
}
@Override
public ListIterator<SolicitacaoAnexo> listIterator(int index) {
// TODO Auto-generated method stub
return null;
}
@Override
public ListIterator<SolicitacaoAnexo> listIterator() {
// TODO Auto-generated method stub
return null;
}
@Override
public int lastIndexOf(Object o) {
// TODO Auto-generated method stub
return 0;
}
@Override
public Iterator<SolicitacaoAnexo> iterator() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return false;
}
@Override
public int indexOf(Object o) {
// TODO Auto-generated method stub
return 0;
}
@Override
public SolicitacaoAnexo get(int index) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean containsAll(Collection<?> c) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean contains(Object o) {
// TODO Auto-generated method stub
return false;
}
@Override
public void clear() {
// TODO Auto-generated method stub
}
@Override
public boolean addAll(int index, Collection<? extends SolicitacaoAnexo> c) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean addAll(Collection<? extends SolicitacaoAnexo> c) {
// TODO Auto-generated method stub
return false;
}
@Override
public void add(int index, SolicitacaoAnexo element) {
// TODO Auto-generated method stub
}
@Override
public boolean add(SolicitacaoAnexo e) {
// TODO Auto-generated method stub
return false;
}
};
objParecer = "";
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Solicitação salva com sucesso!",""));
} else {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Não é possível salvar sem anexo.",""));
}
} else {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Campo 'Parecer' deve ter no mínimo 5 letras.",""));
}
} else {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "O preenchimento do campo 'Parecer' é obrigatório",""));
}
//colocar mensagem que a solicitação não foi salva
}
eu dou um merge na solicitação, pq como o anexo é obrigatório, eu crio a solicitação na hora de salvar um anexo:
public void salvarAnexo() {
if (anexo1.getNome()!=null && anexo1.getTipo()!=null){
if (anexo1.getNome().length()>0 && anexo1.getTipo().length()>0 ){
try {
IOUtils.copy(evento.getFile().getInputstream(), new FileOutputStream("\\R_NOVO_ECLIPSE\\apache-tomcat-7.0.19\\webapps\\pdj\\WebContent\\arqs\\solicitEfetivacao\\" + anexo1.getNome()));
IOUtils.closeQuietly(evento.getFile().getInputstream());
SolicitacaoAnexo anexoTemp = new SolicitacaoAnexo();
anexoTemp.setTipo(anexo1.getTipo());
anexoTemp.setNome(anexo1.getNome());
//anexoTemp.setIdPendencia(base.getId());
if (solicitacao.getId() == null) {
solicitacaoDao = new SolicitacoesDAO();
Solicitacoes solicitacaoTemp = new Solicitacoes();
solicitacaoDao.makePersistent(solicitacaoTemp);
solicitacao.setId(solicitacaoTemp.getId());
}
anexoTemp.setSolicitacao(solicitacao);
anexoTemp.setMatricula(usuarioVO.getChave());
anexoTemp.setPrefixo(usuarioVO.getCodDependencia());
anexoTemp.setData(anexo1.getData());
solicitacoesAnexoDao = new SolicitacaoAnexoDAO();
solicitacoesAnexoDao.makePersistent(anexoTemp);
anexo1 = new SolicitacaoAnexo();
anexoDao1 = new SolicitacaoAnexoDAO();
solicitacaoAnexoLista = anexoDao1.anexosDeUmaSolicitacao(this.solicitacao.getId());
anexoTemp = new SolicitacaoAnexo();
solicitacaoDao = new SolicitacoesDAO();
evento = null;
//Atualiza lista de solicitações para mostrar a nova solicitação na página listaSolicitacaoEfet
solicitacoes = solicitacaoDao.buscarListaInicial(usuarioVO.getCodDependencia(), usuarioVO.getCodDependencia(), usuarioVO.getCodDependencia());
//MENSAGEM DE CONFIRMAÇÃO PARA O USUÁRIO CASO O REGISTRO TENHA SIDO GRAVADO
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Arquivo gravado com sucesso!"));
} catch (FileNotFoundException e) {
e.printStackTrace();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,("Não foi possível gravar."), null));
} catch (IOException e) {
e.printStackTrace();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,("Não foi possível gravar."), null));
}
} else {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,("Todos os campos do painel devem ser preenchidos."), null));
}
}
}