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?SessionScoped
for example– igventurelli
I didn’t want something so broad. With Requestscoped I could do it?
– user70765
I think the
RequestScoped
is minor that theViewScoped
, is not?– igventurelli