[RESOLVIDO] - Problema no <h:inputHidden>

9 respostas
G

Bom dia pessoal, estou com uma pequena dúvida porém não consegui resolvê-la.

O negócio é o seguinte, tenho um Bean que vai receber os valores para a formação do meu relatorio…

public class RelatorioBean {

	private Calendar dataInicial = Calendar.getInstance();
	private Calendar dataFinal = Calendar.getInstance();
	private String loja;
	private String caminho;
	HashMap<String, Object> parameters = new HashMap<String, Object>();

	public void geraPdf() throws FileNotFoundException, ParseException,
			JRException {

		parameters.put("DATA_INI", dataInicial.getTime());
		parameters.put("DATA_FIM", dataFinal.getTime());
		parameters.put("LOJA", loja);

		new GeraRelatorio(parameters, caminho).geraPdf();
	}
//getters e setters
}

aki eu passo os parametros do meu relatorio e o caminho que vai ser o nomeDoRelatorio.jasper

no meu form eu precisava colocar em um <h:inputHidden> o valor do meu relatorio, mais não estou conseguindo.
Aki meu form:

<h:form>
			<!-- aqui eu preciso colocar o nome do relatorio para alimentar o atributo caminho. Ex.: nomeDoRelatorio.jasper -->
			<h:inputHidden  value="#{relatorioBean.caminho}" />
			
			<p:panelGrid columns="2">
				
				<p:outputLabel value="Loja" />
				<p:selectOneMenu value="#{relatorioBean.loja}">
					<f:selectItem itemLabel="01" itemValue="01" />
					<f:selectItem itemLabel="02" itemValue="02" />
					<f:selectItem itemLabel="03" itemValue="02" />
				</p:selectOneMenu>
				<p:outputLabel value="Data Inicial" for="dataIni" />
				<p:calendar id="dataIni" pattern="dd/MM/yyyy" timeZone="America/Sao_Paulo" value="#{relatorioBean.dataInicial.time}" />
				<p:outputLabel value="Data Inicial" for="dataFim" />
				<p:calendar id="dataFim" pattern="dd/MM/yyyy" timeZone="America/Sao_Paulo" value="#{relatorioBean.dataFinal.time}" />
				<h:commandLink value="Visualizar" target="_blank" actionListener="#{relatorioBean.geraPdf}" />
			</p:panelGrid>
		</h:form>

Alguém poderia me mostrar onde eu coloco o valor que eu preciso no inputHidden??

Desde já agradeço a colaboração,
Abraço.

9 Respostas

S

bom dia, qual o escopo do seu bean? se for o default(request) não deve funcionar. tenta colocar um @SessionScope e ve se funciona.

G

Bom dia ssh,

então Dr eu mudei para @SessionScope e não mudou muita coisa, eu precisava de alguma coisa assim:

ao invés de:

o q vc sugere???

Obrigado pela atenção…

C

Bom dia,

uma alternativa seria você ter um bean especifico para o teu relatório. Aí não precisaria usar o h:inputHidden e definir estes dados no xhtml (view)

Por exemplo, você teria um MeuRelatorioBean (que serviria de controller) e nele você define a chamada para a tua classe de relatórios (jasper, parametros, etc)

Não sei se consegui me explicar, mas espero que ajude.

sds.

G

Bom dia cgraf,

entedi sim, dessa forma daria certo tbm, mais acontece que é uma aplicação que já existe e tem uma quantidade enorme de relatórios, então queria ter o trabalho de informar o caminho do relatório somente na minha view, dessa forma eu não precisaria ficar criando um bean para cada relatório.

Você acha que eu não vou ter outra saída, a não ser criar os Beans??

Obrigado pela atenção, Abraço…

C

Bom, a única idéia que me ocorre seria você setar o valor do h:inputhidden com javascript (poderia usar jquery)

Não sei se teria outra alternativa. Por isso particularmente prefiro ter um controller (MB) para cada relatório.

sds

J

O mesmo bean imprime varios relatorio?
tenta usar

<h:form target="_blank">
//codigo aki
<h:commandButton action="#{relatorioBean.geraPdf}" value="Submit">
    <f:setPropertyActionListener target="#{relatorioBean.caminho}" value="caminho" />
</h:commandButton>
</h:form>
G

Blz cgraf, se de tudo não conseguir vou tentar utilizando o jquery.

Obrigado!!!

G

jhoamaral,

vou tentar depois do almoço e aviso aqui no post se deu ou se tenho alguma dúvida para vc me ajudar
mais acho que vai dá certo…

Obrigado Dr.

G

Boa tarde jhoamaral,

Era justamente isso que eu precisava, deu certo!!!

Obrigado!!!

Criado 5 de março de 2013
Ultima resposta 5 de mar. de 2013
Respostas 9
Participantes 4