0
I need to pass an id of an object between the views, the Beans of both are view scoped, I’m trying to pass via f:param, but I can’t. The value always arrives null in the other view
View 1
<ui:define name="titulo">
ARTs Aptas a Livro de Ordem
</ui:define>
<script type="text/javascript">
PrimeFaces.locales['pt_BR'] = {
closeText: 'Fechar',
prevText: 'Anterior',
nextText: 'Próximo',
monthNames: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],
monthNamesShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],
dayNames: ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'],
dayNamesShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'],
dayNamesMin: ['D', 'S', 'T', 'Q ', 'Q', 'S ', 'S'],
weekHeader: 'Semana',
FirstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: '',
timeOnlyTitle: 'Só Horas',
timeText: 'Tempo',
hourText: 'Hora',
minuteText: 'Minuto',
secondText: 'Segundo',
currentText: 'Data Atual',
ampm: false,
month: 'Mês',
week: 'Semana',
day: 'Dia',
allDayText: 'Todo dia'
};
</script>
<ui:define name="content">
<h:form>
<p:dataTable value="#{artsAptasLivroOrdemController.artsAptas}"
id="tableArtsAptas"
rowKey="#{item.numeroArt}" var="item"
emptyMessage="Você não possui ARTs aptas a Livro de Ordem"
paginator="true" rows="20">
<f:facet name="header">
ARTs Aptas a Livro de Ordem
</f:facet>
<p:column headerText="Numero da ART" sortBy="#{item.numeroArt}">
<h:outputText value="#{item.numeroArt}" />
</p:column>
<p:column headerText="Tipo de ART" sortBy="#{item.tipoArt.descricao}">
<h:outputText value="#{item.tipoArt.descricao}" />
</p:column>
<p:column headerText="Subtipo de ART" sortBy="#{item.subtipoArt.descricao}">
<h:outputText value="#{item.subtipoArt.descricao}" />
</p:column>
<p:column headerText="Data de Elaboração" sortBy="#{item.dataElaboracao}">
<h:outputText value="#{item.dataElaboracao}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</p:column>
<p:column headerText="Profissional Contratado" sortBy="#{item.nomeProfissionalContratado}">
</p:column>
<p:column headerText="Empresa Contratada" sortBy="#{item.nomeEmpresaContratada}">
<h:outputText value="#{item.nomeEmpresaContratada}" />
</p:column>
<p:column headerText="Contratante" sortBy="#{item.contrato.identificacaoContratante.nome}">
<h:outputText value="#{item.contrato.identificacaoContratante.nome}" />
</p:column>
<p:column headerText="Proprietário" sortBy="#{item.nomeProprietario}">
<h:outputText value="#{item.nomeProprietario}" />
</p:column>
<p:column headerText="Criar/Ver Livro de Ordem">
<p:commandLink id="criarLivroOrdemButton"
immediate="true"
onclick="dialogLivroOrdem.show();"
update="#{artsAptasLivroOrdemController.componentes}">
<f:setPropertyActionListener value="#{item}" target="#{artsAptasLivroOrdemController.artApta}"/>
<f:param name="numeroArt" value="#{item.numeroArt}" />
<p:graphicImage alt="Criar/Ver" value="../imagens/site/edit.gif" />
</p:commandLink>
<p:commandLink immediate="true"
update="#{livroOrdemController.componentes}"
action="livroOrdem.xhtml?faces-redirect=true">
<f:param name="numeroArt" value="#{item.numeroArt}"/>
<f:setPropertyActionListener value="#{item}" target="#{livroOrdemController.art}"/>
<p:graphicImage alt="Ver Livro de Ordem" value="../imagens/site/detail.png" />
</p:commandLink>
</p:column>
</p:dataTable>
<p:dialog id="dialogLivroOrdem"
showEffect="fade" hideEffect="fade"
modal="true" header="Novo Livro de Ordem"
widgetVar="dialogLivroOrdem" minHeight="40">
<h:form id="formCriarNovoLivro">
<b>
<h:outputLabel value="Numero da ART: " />
</b>
<h:outputText id="numeroArt" value="#{artsAptasLivroOrdemController.artApta.numeroArt}" />
<br />
<br />
<b>
<h:outputLabel value="Nome do Proprietário: " />
</b>
<h:outputText id="nomeProprietario" value="#{artsAptasLivroOrdemController.artApta.nomeProprietario}" />
<br />
<br />
<b>
<h:outputLabel value="Endereço da Obra: " />
</b>
<h:outputText id="enderecoObra" value="#{artsAptasLivroOrdemController.artApta.enderecoObraServico.tipoLogradouro} #{artsAptasLivroOrdemController.artApta.enderecoObraServico.logradouro},
Nº #{artsAptasLivroOrdemController.artApta.enderecoObraServico.numero},
CEP: #{artsAptasLivroOrdemController.artApta.enderecoObraServico.cep},
#{artsAptasLivroOrdemController.artApta.enderecoObraServico.bairro},
#{artsAptasLivroOrdemController.artApta.enderecoObraServico.cidade} - #{artsAptasLivroOrdemController.artApta.enderecoObraServico.uf}" />
<br />
<br />
<b>
<h:outputLabel for="dataPrevistaConclusaoObra" value="Data Prevista para Conclusão da Obra*: " />
</b>
<p:calendar id="dataRealInicioObra"
required="true"
requiredMessage="Campo Obrigatório"
pattern="dd/MM/yyyy"
locale="pt_BR"
showOn="button"
value="#{artsAptasLivroOrdemController.dataRealInicioObra}"/>
<br />
<br />
<b>
<h:outputLabel for="dataPrevistaConclusaoObra" value="Data Prevista para Conclusão da Obra*: " />
</b>
<p:calendar id="dataPrevistaConclusaoObra"
required="true"
requiredMessage="Campo Obrigatório"
pattern="dd/MM/yyyy"
locale="pt_BR"
showOn="button"/>
<br />
<br />
<p:commandButton value="Criar Novo Livro"
action="#{artsAptasLivroOrdemController.criarLivroOrdem()}"
oncomplete="dialogLivroOrdem.hide();"
update="#{artsAptasLivroOrdemController.componentes}">
<f:setPropertyActionListener value="#{artsAptasLivroOrdemController.artApta}" target="#{livroOrdemController.art}"/>
</p:commandButton>
<p:commandButton value="Cancelar"
onclick="dialogLivroOrdem.hide();" />
</h:form>
</p:dialog>
</h:form>
</ui:define>
View 2
<ui:define name="titulo">
Livro de Ordem
</ui:define>
<ui:define name="content">
<f:metadata>
<f:viewParam name="i" value="#{livroOrdemController.numeroArt}" />
</f:metadata>
<h:form>
<p:panel header="DADOS DO LIVRO DE ORDEM">
<h:panelGrid columns="2" cellpadding="10">
<h:outputLabel value="Numero da ART: "/>
<h:outputText
id="numeroArt1"
value="#{livroOrdemController.numeroArt}"/>
<h:outputLabel value="Nome do Proprietário: "/>
<h:outputText
id="nomeProprietario1"
value="#{artsAptasLivroOrdemController.artApta.nomeProprietario}"/>
<h:outputLabel value="Endereço da Obra: "/>
<h:outputText
id="enderecoObra1"
value="#{artsAptasLivroOrdemController.artApta.enderecoObraServico.tipoLogradouro} #{artsAptasLivroOrdemController.artApta.enderecoObraServico.logradouro},
Nº #{artsAptasLivroOrdemController.artApta.enderecoObraServico.numero},
CEP: #{artsAptasLivroOrdemController.artApta.enderecoObraServico.cep},
#{artsAptasLivroOrdemController.artApta.enderecoObraServico.bairro},
#{artsAptasLivroOrdemController.artApta.enderecoObraServico.cidade} - #{artsAptasLivroOrdemController.artApta.enderecoObraServico.uf}"/>
<p:commandButton value="Adicionar Relato"
onclick="dialogRelato.show();"/>
</h:panelGrid>
</p:panel>
<p:dialog id="dialogRelato"
showEffect="fade" hideEffect="fade"
modal="true" header="Novo Relato"
widgetVar="dialogRelato" minHeight="40">
<h:form id="formCriarNovoLivro">
<b>
<h:outputLabel value="Tipo de Relato: " />
</b>
<h:inputText id="tipoRelato" value="#{artsAptasLivroOrdemController.tipoRelato}" />
<br />
<br />
<b>
<h:outputLabel for="dataRelato" value="Data do Relato: " />
</b>
<p:calendar id="dataRelato"
required="true"
requiredMessage="Campo Obrigatório"
pattern="dd/MM/yyyy"
locale="pt_BR"
showOn="button"
value="#{artsAptasLivroOrdemController.dataRelato}"/>
<br />
<br />
<b>
<h:outputLabel for="etapaObra" value="Etapa da Obra: " />
</b>
<h:inputText id="etapaObra" value="#{artsAptasLivroOrdemController.etapa}" />
<br />
<br />
<b>
<h:outputLabel for="inicioEtapa" value="Inicio da Etapa: " />
</b>
<p:calendar id="inicioEtapa"
required="true"
requiredMessage="Campo Obrigatório"
pattern="dd/MM/yyyy"
locale="pt_BR"
showOn="button"
value="#{artsAptasLivroOrdemController.dataIncioEtapa}"/>
<br />
<br />
<b>
<h:outputLabel for="fimEtapa" value="Términio da Etapa: " />
</b>
<p:calendar id="fimEtapa"
required="true"
requiredMessage="Campo Obrigatório"
pattern="dd/MM/yyyy"
locale="pt_BR"
showOn="button"
value="#{artsAptasLivroOrdemController.dataTerminioEtapa}"/>
<br />
<br />
<b>
<h:outputLabel value="Descrição: " />
</b>
<h:inputText id="numeroArt" value="#{artsAptasLivroOrdemController.descricao}" />
<br />
<br />
<p:commandButton value="Adicionar Relato"
oncomplete="dialogRelato.hide();"
update="#{artsAptasLivroOrdemController.componentes}">
<f:setPropertyActionListener value="#{artsAptasLivroOrdemController.artApta}" target="#{livroOrdemController.art}"/>
</p:commandButton>
<p:commandButton value="Cancelar"
onclick="dialogRelato.hide();" />
</h:form>
</p:dialog>
</h:form>
</ui:define>
I may be mistaken, but I think it makes sense to be null in the other Managedbean precisely because the first is
ViewScoped. From the moment you left the view, everything related to it dies at that time. Already experienced putting a wider scope?SessionScopedfor example– igventurelli
I didn’t want something so broad. With Requestscoped I could do it?
– user70765
I think the
RequestScopedis minor that theViewScoped, is not?– igventurelli