Como faço para validar um conteudo para saber se realmente é data??
Existe uma função para isso?
Grato.
Rodrigo MArini.
Como faço para validar um conteudo para saber se realmente é data??
Existe uma função para isso?
Grato.
Rodrigo MArini.
kra essa classe vc so instancia joga no panel e pronto. Quando perde o foca ela valida a data e se for invalida envia mensagem e recupera o foco.
Qualquer duvida posta novamente.
/*
* Created on 04/05/2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package org.jgenesis.swing;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jgenesis.swing.models.BeanTextDocument;
/**
* JGDateTextField uses a date pattern to format and edit dates.
* The following characters can be specified (all mean 2-digit, except Y and S):
* <code>
* d - day in month
* M - month in year
* y - year (2-digit)
* Y - year (4-digit)
* h - hour in day (00-23)
* m - minute in hour
* s - second in minute
* S - millisecond in second (3-digit)
* </code>
* Date pattern examples:
* <code>
* d/M/Y
* d/M/y
* d/M/Y h:m:s
* </code>
*/
public class JGDateTextField extends JGTextField {
private static Log log = LogFactory.getLog(JGDateTextField.class);
private String datePattern;
private String dateFormatPattern;
private boolean allowInvalidDate = false;
public JGDateTextField() {
this(null);
}
public JGDateTextField(String datePattern) {
this.setDatePattern(datePattern);
}
public boolean validateInput() {
if (! allowInvalidDate && ! isEmpty()) {
// Não permitir datas que não preencham toda a máscara.
if (getText().trim().length() < dateFormatPattern.trim().length()) {
handleInvalidDate();
return false;
}
try {
document.getDateFormat().parse(getText());
} catch (ParseException e) {
handleInvalidDate();
return false;
}
}
return super.validateInput();
}
void handleInvalidDate() {
if (log.isInfoEnabled())
log.info(getResourceBundle().getString("JGBaseTextField.messageInvalidDate") + getText());
if (isShowValidationDialogs())
JOptionPane.showMessageDialog(JGDateTextField.this, getResourceBundle().getString("JGBaseTextField.messageInvalidDate") + getText());
else
UIManager.getLookAndFeel().provideErrorFeedback(JGDateTextField.this);
}
private void processDatePattern(String datePattern) {
StringBuffer maskPattern = new StringBuffer();
StringBuffer dateFormatPattern = new StringBuffer();
for (int i=0; i < datePattern.length(); i++) {
switch (datePattern.charAt(i)) {
case 'd':
maskPattern.append("99");
dateFormatPattern.append("dd");
break;
case 'M':
maskPattern.append("99");
dateFormatPattern.append("MM");
break;
case 'y':
maskPattern.append("99");
dateFormatPattern.append("yy");
break;
case 'Y':
maskPattern.append("9999");
dateFormatPattern.append("yyyy");
break;
case 'h':
maskPattern.append("99");
dateFormatPattern.append("HH");
break;
case 'm':
maskPattern.append("99");
dateFormatPattern.append("mm");
break;
case 's':
maskPattern.append("99");
dateFormatPattern.append("ss");
break;
case 'S':
maskPattern.append("999");
dateFormatPattern.append("SSS");
break;
default:
maskPattern.append(datePattern.charAt(i));
dateFormatPattern.append(datePattern.charAt(i));
break;
}
}
super.setMaskPattern(maskPattern.toString());
this.dateFormatPattern = dateFormatPattern.toString();
}
/**
* @return Returns the allowInvalidDate.
*/
public boolean isAllowInvalidDate() {
return allowInvalidDate;
}
/**
* @param allowInvalidDate The allowInvalidDate to set.
*/
public void setAllowInvalidDate(boolean allowInvalidDate) {
this.allowInvalidDate = allowInvalidDate;
}
/**
* @return Returns the datePattern.
*/
public String getDatePattern() {
return datePattern;
}
/**
* @param datePattern The datePattern to set.
*/
public void setDatePattern(String datePattern) {
this.datePattern = datePattern;
if (datePattern == null)
datePattern = getResourceBundle().getString("JGBaseTextField.defaultDatePattern");
processDatePattern(datePattern);
document.setDateFormat(SimpleDateFormat.getInstance());
((SimpleDateFormat)document.getDateFormat()).applyPattern(dateFormatPattern);
document.getDateFormat().setLenient(false);
this.setText(getText());
}
public Object getValue() {
Object value = null;
if (this.document instanceof BeanTextDocument)
value = ((BeanTextDocument)this.document).getValue();
else
try {
value = document.getDateFormat().parse(getText());
} catch (ParseException e) {
log.debug(e);
}
return value;
}
public void setValue(Object value) {
super.setValue(value instanceof String ? format((String) value)
: value != null ? document.getDateFormat().format(value) : "");
}
public void setMaskPattern(String maskPattern) {
throw new UnsupportedOperationException("You cannot set a JGDateTextField maskPattern directly. Use setDatePattern(String datePattern) instead.");
}
}
Muito show essa classe, porem eu uso struts e gostaria de saber como fazer uma validação simples pra jogar no meu form, isto é se o java oferecer…
Será que existe??
Se você converter a data para java.util.Date não serve?
ex.:
String str = "31/02/2006";
SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
try{
Date data = formatador.parse(str);
}catch(ParseException pe){
//data invalida
}
Acho que sim…vou tentar…Obrigadão!!!
Rodrigo.
Deu certo obrigado!