Incrementar data(RESOLVIDO)

3 respostas
C
Pessoal tenho 2 campos calender, um dataInicial e outro dataFinal. Preciso que quando a dataFinal estiver vazia, quando selecionar a dataInicial, pegue essa dataInicial e acrescente mais 30 dias e jogue na dataFinal. Estou fazendo assim: HTML:
<h:panelGroup>
						<h:outputLabel id="optDtInicial" value="#{msgs.optDtInicial}" />
						<br/>
						<p:calendar id="cDtInicial"
									value="#{veiculoManutencaoMBean.selectedManutencaoVeiculo.dtinicial}" maxlength="10"
									navigator="true" showOtherMonths="true" pattern="dd/MM/yyyy" required="true"
									requiredMessage="#{msgs.cDtInicial}" locale="pt_BR" converterMessage="#{msgs.cDataInicialInvalida}"
									maxdate="#{veiculoManutencaoMBean.selectedManutencaoVeiculo.dtfinal}"
									onblur="validateDate(this);" onkeyup="formataData(this,event)" size="45">
							<p:ajax event="dateSelect" update="cDtInicial cDtFinal" listener="#{veiculoManutencaoMBean.dataIncremental}"/>
						</p:calendar>
					</h:panelGroup>
					
					<p:spacer width="7" />
					<h:panelGroup>
						<h:outputLabel id="optDtFinal" value="#{msgs.optDtFinal}" />
						<br/>
						<p:calendar id="cDtFinal"
									value="#{veiculoManutencaoMBean.selectedManutencaoVeiculo.dtfinal}" maxlength="10"
									navigator="true" showOtherMonths="true" pattern="dd/MM/yyyy"
									locale="pt_BR" converterMessage="#{msgs.cDataFinalInvalida}"
									mindate="#{veiculoManutencaoMBean.selectedManutencaoVeiculo.dtinicial}"
									onblur="validateDate(this);" onkeyup="formataData(this,event)" size="45">
							<p:ajax event="dateSelect" update="cDtInicial cDtFinal" />
						</p:calendar>
					</h:panelGroup>
Bean:
public void dataIncremental() {
			
			Calendar dataIncrementada = Calendar.getInstance(); 
			
			if(veiculoManutencao.getDtfinal() == null) {
				dataIncrementada.setTime(veiculoManutencao.getDtinicial());  
				dataIncrementada.add(Calendar.DAY_OF_MONTH, 30);
				dataIncrementada.getTime();
			}
		}
Mas assim da NullPointerException porque ele não encontra o valor da dataInicial. Alguém sabe como posso resolver esse problema?

3 Respostas

Hebert_Coelho

Qual o scope do seu ManagedBean?

A

não entendi direito uma coisa no teu código, na tua página tu vinculou a data assim:

value="#{veiculoManutencaoMBean.selectedManutencaoVeiculo.dtinicial}"

e ao recuperar no teu managedbean tu recuperou

dataIncrementada.setTime(veiculoManutencao.getDtinicial());

para que isso funcione você deveria acessar a data que você apontou na tua view correto?
ficaria assim, não?

...
dataIncrementada.setTime(getSelectedManutencaoVeiculo().getDtinicial());
...
C
Pessoal funcionou, ficou assim: Bean:
public void dataIncremental() {
			Calendar dataIncrementada = Calendar.getInstance(); 
			
			if(veiculoManutencao.getDtfinal() == null) {
				dataIncrementada.setTime(veiculoManutencao.getDtinicial());  
				dataIncrementada.add(Calendar.DAY_OF_MONTH, 30);
				veiculoManutencao.setDtfinal(dataIncrementada.getTime());
			}
		}
Ai chamo o método depois de salvar. Vlw.
Criado 29 de maio de 2012
Ultima resposta 30 de mai. de 2012
Respostas 3
Participantes 3