Dobry den,

na TSS bola volakedy kapitola zo Struts Live (aspon myslim) s nazvom Integrating ActionForms with POJOs, teraz to tam uz neviem najst (mam ale PDF, takze pripadne mozem poslat mailom). Tam bolo krasne vysvetlene, preco by nestringove polozky nemali byt vo formulari. Zjednodusene preto, ze ked nezbehne validacia na serveri mali by ste vypisat formular rovnako ako ho mal user, cize aj s jeho chybou, co sa vam pri konverzii na Date (alebo cokolvek) nepodari.

V sucasnosti ja osobne preferujem vytvaranie formularov sposobom, ze je v nom POJO objekt a vsetky nestringove objekty mam naviac vo formulari, moze to vyzerat takto nejak:

public class NejakyFormular extends ActionForm implements Serializable
{
  private NejakaTrieda nejakyObjekt;
  private string dateFrom;

  public NejakyFormular(NejakaTrieda nejakyObjekt)
  {
     setNejakyObjekt(nejakyObjekt);
  }

  public setNejakyObjekt(NejakaTrieda nejakyObjekt)
  {
     this.nejakyObjekt = nejakyObjekt;
     //tu si inicializujem vsetky nestringove atributy
     dateFrom = Tools.formatDate(nejakyObjekt.getDateFrom());
  }

  public void setDateFrom(String dateFrom)
  {
     this.dateFrom = dateFrom;
     long ldatumOd = DB.getTimestamp(dateFrom, "0:00");
     if (ldatumOd > 0)
     {
        getNejakyObjekt().setDateFrom(new Date(ldatumOd));
     }
  }

  //ostatne get / set metody a potrebne veci
}

Vyhoda je v tom, ze vo forme je klasicky POJO objekt, ktory v mojom pripade ziskavam cez Cayenne, takz inicializacia formu a ulozenie do DB bezi cez Cayenne. Validacia a ostatna praca zase cez Struts.

V JSP sa na polozky z objektu odkazuje ako:
<html:text property="nejakyObjekt.nejakaStringPolozka"/>
a na nestringove priamo ako:
<html:text property="dateFrom"/>

Vyhoda je v tom, ze ked pridate nejaky dalsi atribut do POJO objektu, nemusite to dat aj do Formu, staci pridat do JSP. Nevyhoda je s JavaScriptom, tomu vadi ze je v nazve atributu bodka, takze na to treba pristupovat ako document.menoFormu.elements["nejakyObjekt.nejakaStringPolozka"].value

Vladimir Naprstek wrote:

Dobrý den,
trochu se trápím se zadáváním datumu a času ve formuláři. Rád bych, aby
uživatel zadával hodnotu v jednom políčku (nejlépe v českém formátu).
Ale nikde nemohu najít žádný příklad.
Zkoušel jsem použít atribut typu java.sql.Datetime, ale zadám-li hodnotu
např. "2005-11-04 15:00" (formátování si nechám na potom), tak dostanu
chybu javax.servlet.ServletException: BeanUtils.populate a hlouběji ve
výpise je napsáno: Caused by: java.lang.NumberFormatException: For input
string: "04 15:00"

Použít datový typ String a pak dělat převody na Datetime se mi moc
nechce. Navíc jsem přesvědčen, že to určitě jde, jen já nevím jak.

poradíte mi, prosím?



--
jeeff

Odpovedet emailem