Chmelej's Blog

Wicket poznamky

Published 25 Sep 20123 min read0 comments

Začínali jsme s wicket 1.3 takže je pravděpodobné že některé poznámky budou zastaralé

Co je potřeba proto abych do aplikace přidal jeden formulář:

  • vytvořit formulář v HTML do souboru *Page.html
  • root tagy jsou wicket:extend
  • vytvořit novou třídu *Page extends BasePage
  • třída obsahuje privátní třídu *Form extend Form
  • (pokud je to nutné) do MmcApplication.java přidat mount URI na novou tridu *Page
  • jména položek ve formuláři musí korespondovat se jmény proměných u Model objektu, jinak to padá protože nelze volat gettery
  • abych mohl pohodlne nacitat data z URL je potreba pridat getter do web/util/BookmarkParams.java
  • ??? pridat lokalizacni hlasky
  • web/users/ListNavigationPanel.java a web/users/ListNavigationPanel.xml

Co je potreba proto abych pridal novy Manager a DAO:

  • definovat iface *Manager.java a implementovat *ManagerImpl.java
  • definovat novy Manager do ctx/app-logic.xml
  • definovat novy Dao do ctx/app-dao.xml
  • do AppFacadeImpl pridej Getter (@Overide) a Setter (@Autowired)
  • do BasePage.java pridat getter na *Manager potom je potreba rozsirit interface AppFacade.java a jeho implementaci

Pridani Stranky do hlavniho menu

Typické Exceptions

  • JUnit xxxManagerTest skončí s chybou NullPointerException na DAO objektu.
    • setter ma nastaven @Autowired
    • pri testovani managera je potreba dao inicializovat primo v testu jako MOCK aby se odstínili chyby DAO objektu
  • org.apache.wicket.markup.MarkupNotFoundException: Markup not found. Component class: cz.zs.mmc.web.cdl.listing.UniListingMergePage
    • Např při refaktoringu se změnilo jméno třídy nebo package ale prislusny HTML soubor se jmenuje furt po staru.
  • Can’t instantiate page using constructor public cz.zs.mmc.web.LoginPage Caused by: java.lang.NullPointerException at cz.zs.mmc.web.HeaderPanel.(HeaderPanel.java:36)
    • do souboru /WEB-INF/app-web.xml pridat
    • <context:annotation-config base-package=“cz.zs.cdc.logic”/>

Migrace cz.zs.mmc.web.common.search na cz.zs.mmc.web.common.searchx

  • zmenit package v importu ze search na searchx
  • zmenit SearchPanelSpecification na SearchPanelDefinition
  • jednoduche sloupecky pridat pres def.addColumns(SimpleColumnDef.createColumnDefs(“name”, “login”, “roles”));

AJAX

  • pri hledani komponent se u pathu pouziva jako oddelovac dvojtecka :
  • pri schovavani a ukazovani je potreba aby neviditelnej component byl zabalenej ve viditelnym a prekreslovat ten viditelnej protoze jinak ajax neviditelnej nejdriv nevyrendruje a pozdeji ho nemuze najit 1

Jak si sahnout z WEB aplikace na Spring bean

  • ComponentUtils.getApp(this).getUniListingManager();
  • nebo pokud trida dedi BasePage tak by mohla mit primo getter.
  • (MmcApplication) getApplication()).getSpringContextLocator().getSpringContext().getBean(validator);

WARN [Localizer] Tried to retrieve a localized string for a component …

  • vetsinou v konstruktoru pouzivam volani getString(“xxx”) abych dostal pocestenou hlasku, oprava staci pouzit new StringResourceModel(“xxx”,null) coz ale nevrati String ale Model …

Po 30s se objeví chyba “stránka je prošlá**”

  • zřejmě je v konstruktoru použitý final objekt, který nelze serializovat. Typicky XApplication nebo XAppFacade

Moje upravy:** ComponentUtils.getParentForm(this) **upgrade 1.4 -> 1.5

  • zmena v package pro PageParameters, i metody pro tahani Long a String jsou jine!
  • zmena nazvu XML souboru xxx.xml -> xxx.properties.xml

upgrade 1.5 -> 1.6