Sure:
BEAN Code:
(Please note: the createDate and lastChangeDate are auto generated and work,
the Problem is the "buchungsDatum" and "belegDatum" fields)
@SuppressWarnings("unchecked")
public class BuchungsKopf extends MetaData {
public static final String VAL_GROUP_BUCHUNG_DATUM = "BUCHUNG_DATUM";
public static final String PROP_BUCHUNGS_KREIS = "buchungsKreis";
public static final String PROP_BUCHUNGS_DATUM = "buchungsDatum";
private int id = -1;
private int konfigBukokoid;
private String creatorName = "anon";
private Timestamp createDate = new
Timestamp(System.currentTimeMillis());
private Timestamp lastCangeDate = new
Timestamp(System.currentTimeMillis());
private int buchungsStatus;
private String belegArt;
private int buchungsPeriode;
private int buchungsKreis;
private int geschaeftsJahr;
private Date buchungsDatum;
private Date belegDatum;
private String waehrung;
private String text;
private String referenz;
private boolean steuerRechnen;
private String name;
private String strasse;
private String portfach;
private String portfachPlz;
private String ort;
private String plz;
private String land;
private String blz;
private String bankLand;
private String bankKontoNr;
public void activateMetaData() {
addConstraint(new
ConstrainedProperty("id").notNull(true).identifier(true).editable(false));
addConstraint(new
ConstrainedProperty("konfigBukokoid").notNull(true).manyToOne(BuchungsKopfKonfig.class,
"id", null, CreateTable.CASCADE).editable(false));
addConstraint(new
ConstrainedProperty("creatorName").maxLength(50).listed(true).editable(false));
addConstraint(new
ConstrainedProperty("createDate").editable(false));
addConstraint(new
ConstrainedProperty("lastCangeDate").editable(false));
addConstraint(new ConstrainedProperty("belegArt").maxLength(2));
addConstraint(new
ConstrainedProperty("buchungsPeriode").inList(Vwk2KonfigIF.BUCHUNGS_PERIODEN));
addConstraint(new
ConstrainedProperty(PROP_BUCHUNGS_KREIS).rangeBegin(1));
addConstraint(new ConstrainedProperty("waehrung").maxLength(5));
addConstraint(new ConstrainedProperty("text").maxLength(25));
addConstraint(new
ConstrainedProperty("referenz").maxLength(16));
addConstraint(new ConstrainedProperty("name").maxLength(35));
addConstraint(new ConstrainedProperty("strasse").maxLength(35));
addConstraint(new
ConstrainedProperty("portfach").maxLength(10));
addConstraint(new
ConstrainedProperty("portfachPlz").maxLength(10));
addConstraint(new ConstrainedProperty("ort").maxLength(35));
addConstraint(new ConstrainedProperty("plz").maxLength(10));
addConstraint(new ConstrainedProperty("land").maxLength(3));
addConstraint(new ConstrainedProperty("blz").maxLength(15));
addConstraint(new ConstrainedProperty("bankLand").maxLength(3));
addConstraint(new
ConstrainedProperty("bankKontoNr").maxLength(18));
addConstraint(new
ConstrainedProperty("belegDatum").format(Vwk2KonfigIF.INPUT_DATE_FORMAT_DOTS));
addConstraint(new
ConstrainedProperty(PROP_BUCHUNGS_DATUM).format(Vwk2KonfigIF.INPUT_DATE_FORMAT_DOTS));
}
}
The Date Format:
public class Vwk2KonfigIF {
....
public static final Format INPUT_DATE_FORMAT_DOTS = new
SimpleDateFormat("dd.MM.yyyy");
....
}
Sourcecode:: Element:BuchungsKopfEdit:
The form post gets handled by "doAlterBuKo()", which runs into processElement()
because the bean is not validated
public class BuchungsKopfEdit extends AbstractVwk2Element {
private Template htmlTemplate = null;
private ContentQueryManager<BuchungsKopf> manager = null;
private BuchungsKopf currentBuchungsKopf = null;
public void initialize() {
Datasource datasource = getPropertyTyped(Vwk2KonfigIF.DATASOURCE_NAME,
Datasource.class);
manager = new ContentQueryManager<BuchungsKopf>(datasource,
BuchungsKopf.class);
int bukokoId = getInputInt(Vwk2KonfigIF.PARAM_BUKOKO_ID);
System.out.println("Booking Konfig id: " + bukokoId);
BuchungsKopf curBuKoKo = new BuchungsKopf();
curBuKoKo.setKonfigBukokoid(bukokoId);
curBuKoKo.setCreatorName(getUserName());
currentBuchungsKopf = curBuKoKo;
htmlTemplate = getHtmlTemplate("buchen.buchungskopf");
Vwk2SelectBoxHelper.addBuchungBuchungsKreisSelect(this,
htmlTemplate, currentBuchungsKopf, BuchungsKopf.PROP_BUCHUNGS_KREIS);
}
@Override
public void processElement() throws EngineException {
int bukokoId = getInputInt(Vwk2KonfigIF.PARAM_BUKOKO_ID);
setOutput(Vwk2KonfigIF.PARAM_BUKOKO_ID, bukokoId);
String statusMessage = getInput(Vwk2KonfigIF.PARAM_STATUS_MESSAGE);
if (null != statusMessage) {
htmlTemplate.setValue(Vwk2KonfigIF.PARAM_STATUS_MESSAGE,
statusMessage);
clearOutput(Vwk2KonfigIF.PARAM_STATUS_MESSAGE);
}
System.out.println("current Buchuingsdate: " +
currentBuchungsKopf.getBuchungsDatum());
generateForm(htmlTemplate, currentBuchungsKopf);
print(htmlTemplate);
}
public void doAlterBuKo(){
fillSubmissionBean(currentBuchungsKopf);
if ( ((Validated) currentBuchungsKopf).validate() ) {
currentBuchungsKopf.setLastCangeDate(new
Timestamp(System.currentTimeMillis()));
if (currentBuchungsKopf.getId() > 0) {
setOutput(Vwk2KonfigIF.PARAM_STATUS_MESSAGE,
"Buchungs Kopf wurde erfolgreich geändert");
} else {
setOutput(Vwk2KonfigIF.PARAM_STATUS_MESSAGE,
"Buchungs Kopf wurde erfolgreich hinzugefügt");
}
manager.save(currentBuchungsKopf);
exit("list");
} else {
System.out.println("Fehler in der Eingabe..");
ValidationBuilderXhtml builder = new
ValidationBuilderXhtml();
builder.generateErrorMarkings(htmlTemplate,
((Validated) currentBuchungsKopf).getValidationErrors(), null, null);
ValidationBuilderXhtml marksBuilder = new
ValidationBuilderXhtml();
marksBuilder.generateErrorMarkings(htmlTemplate,
((Validated) currentBuchungsKopf).getValidationErrors(), null, null);
processElement();
}
}
}
Stack trace:
SCHWERWIEGEND: Error on host localhost:8080//vwk2
com.uwyn.rife.engine.exceptions.EngineException:
java.lang.IllegalArgumentException: Cannot format given Object as a Date
at
com.uwyn.rife.engine.ElementContext.processContext(ElementContext.java:464)
at com.uwyn.rife.engine.RequestState.service(RequestState.java:350)
at com.uwyn.rife.engine.Gate.handleRequest(Gate.java:421)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.uwyn.rife.servlet.RifeFilter.doFilter(RifeFilter.java:142)
at
org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
at
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
at
org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
at org.mortbay.http.HttpServer.service(HttpServer.java:909)
at org.mortbay.http.HttpConnection.service(HttpConnection.java:816)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:982)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:833)
at
org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
Caused by: java.lang.IllegalArgumentException: Cannot format given Object as a
Date
at java.text.DateFormat.format(DateFormat.java:279)
at java.text.Format.format(Format.java:133)
at com.uwyn.rife.tools.BeanUtils.formatPropertyValue(BeanUtils.java:485)
at com.uwyn.rife.tools.ArrayUtils.createStringArray(ArrayUtils.java:115)
at
com.uwyn.rife.site.FormBuilderXhtml.generateForm(FormBuilderXhtml.java:155)
at
com.uwyn.rife.site.FormBuilderXhtml.generateForm(FormBuilderXhtml.java:65)
at
com.uwyn.rife.engine.ElementContext.generateForm(ElementContext.java:3100)
at
com.uwyn.rife.engine.ElementSupport.generateForm(ElementSupport.java:4827)
at
com.uwyn.rife.engine.ElementSupport.generateForm(ElementSupport.java:4795)
at
de.metro.kws.vwk2.elements.user.buchen.BuchungsKopfEdit.processElement(BuchungsKopfEdit.java:53)
at
de.metro.kws.vwk2.elements.user.buchen.BuchungsKopfEdit.doAlterBuKo(BuchungsKopfEdit.java:74)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
com.uwyn.rife.engine.ElementContext.processContext(ElementContext.java:450)
... 20 more
I hope it helps...
> -----Ursprüngliche Nachricht-----
> Von: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] Im Auftrag von Geert Bevin
> Gesendet: Dienstag, 22. August 2006 15:09
> An: RIFE users list : questions,bug reports and suggestions.
> Betreff: Re: [Rife-users] Dateformat and Generate Form
>
> Hi Gill,
>
> can you please include your full stack trace and the source code of
> that bean?
>
> Thanks,
>
> Geert
>
> On 22 Aug 2006, at 14:58, Gill, Huibert wrote:
>
> > Hello,
> >
> > I got a problem using Validation with Dateformat and the
> > generateForm() in my Element.
> >
> > I have a simple Bean with som text, number and a date fields.
> >
> > If the submitted Bean is not Valid, I will generate the
> errors, and
> > the Markers in the Template.
> > Then a generataForm() is called to regenerate the form.
> >
> > This works pretty well for all Fields, except for Datefields.
> > If I submit a wrongly formated Date (or a bogus word) the method
> > call for generateForm() throws an Exception "Cannot format given
> > Object as a Date"
> >
> > Funny thing is that if a submit a word in a number field,
> the error
> > markings are generated correctly, and the generateForm() does not
> > throw an exception.
> >
> >
> > My problem here is, that if I submit a wrong date, all other form
> > info (hidden fields, select boxes) are not generated either.
> >
> > Is there a way to set the "wrong" Date to a NULL value or
> something
> > similar?
> >
> >
> > Mit freundlichen Grüßen / With kind regards
> >
> > Huibert Gill
> > _______________________________________________
> > Rife-users mailing list
> > [email protected]
> > http://lists.uwyn.com/mailman/listinfo/rife-users
> >
>
> --
> Geert Bevin
> Uwyn "Use what you need" - http://uwyn.com
> RIFE Java application framework - http://rifers.org
> Music and words - http://gbevin.com
>
>
> _______________________________________________
> Rife-users mailing list
> [email protected]
> http://lists.uwyn.com/mailman/listinfo/rife-users
>
_______________________________________________
Rife-users mailing list
[email protected]
http://lists.uwyn.com/mailman/listinfo/rife-users