ПИА/JSF

Извор: SI Wiki
< ПИА
Датум измене: 19. новембар 2022. у 14:48; аутор: KockaAdmiralac (разговор | доприноси) (Vodič sa dosadašnjim problemima i razlikama u vezi sa JSF)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу

Java Server Faces је део градива који се обрађује током прве половине предмета. Водич испод је намењен да помогне студентима који вежбају за колоквијум, како би успешно поставили све алате, пронашли узрок неких грешки, и тако даље.

Поставка

Слично као на Информационим системима 1, у овом делу градива се ради са Jakarta EE технологијом, унутар NetBeans развојног окружења. На страници предмета постоји упутство за поставку алата, које се делом репродукује овде са одређеним додацима, али у зависности од године и ажурности овог водича може бити новији од препорука које се помињу овде.

Кораци како бисте поставили све алате су:

  1. Преузети и инсталирати JDK 11.0.6 за ваш оперативни систем, коришћењем инсталера
  2. Преузети и инсталирати NetBeans 14 развојно окружење за ваш оперативни систем, коришћењем инсталера, и током инсталације изабрати претходно инсталирани JDK
    Као на ИС1, не инсталирајте NetBeans у директоријум са размаком у путањи. Уколико га инсталирате у Program Files директоријум, реинсталирајте га.
  3. Унутар NetBeans, у левој траци, под Services табом, након десног клика на Servers опцију изабрати Add Server, као тип сервера одабрати GlassFish Server, одабрати верзију 6.2.1, променити путању за инсталацију уколико је потребно, сагласити се са условима коришћења и преузети GlassFish Server, затим завршити поставку сервера са подразумеваним опцијама

При прављењу пројекта, потребно је:

  1. Изабрати опцију за прављење новог пројекта, а унутар ње Web Application под Java with Maven категоријом
  2. Изабрати претходно постављени GlassFish Server као и Jakarta EE 9 Web
  3. Након прављења пројекта, у web.xml фајл, унутар <web-app> је потребно додати следеће:
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>jakarta.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.xhtml</welcome-file>
    </welcome-file-list>
    
  4. Након прављења JSF странице, у <html> је неопходно додати xmlns:h="http://xmlns.jcp.org/jsf/html", како би JSF тагови типа <h:tag> радили, а затим додати h: префикс у <head> и <body>
    Уколико користите тагове типа <f:tag>, NetBeans би требало да вам аутоматски предлаже те тагове и чим искористите предлог ће увести одговарајући XML именски простор

Алтернативно, преузмите поставку пројекта са странице предмета и користите њу уместо да правите пројекат испочетка.

Миграција са Java EE 8

На предмету се до школске 2022/2023. године радило на Java EE 8 платформи, кад се прешло на Jakarta EE 11. Због овога, снимци вежби из тог периода се могу мало разликовати од тренутне процедуре, углавном по процедури прављења пројекта описаној изнад.

Поред броја, постоји пар разлика између рада са ове две верзије:

  • GlassFish Server верзија 6.2.1 не ради са JDK 11
  • javax пакет је преименован у jakarta
  • @FacesConfig анотација више није неопходна изнад bean-ова
  • Валидационе поруке се неће приказивати уколико не додате <h:messages> у форму.

Не препоручује се мењање верзије у постојећем Java EE 8 пројекту, већ прављење новог пројекта, копирање фајлова у њега и затим ажурирање на начин поменут изнад.

Честе грешке

  • Као правило, уколико имате неку чудну грешку, пробајте прво са Clean and Build пројекта.
  • Уколико NetBeans не приказује сугестије за тагове у JSF фајловима, проверите да ли сте поставили xmlns:h атрибут како је горе описано.
  • Када правите managed bean, NetBeans подразумевано изгенерише код који увози javax пакет, и потребно је променити га на jakarta пакет.
  • Уколико грешка помиње како org.glassfish.exousia.modules.locked.SimplePolicyConfiguration класа не постоји, прво проверите да ли сте добро написали тагове у web.xml. Шансе су, такође, да вам се покреће стари GlassFish сервер. Покушајте да зауставите GlassFish сервер кроз Services таб, затим обришите све старе GlassFish Server инсталације и покрените сервер опет.
  • Уколико вам увожење CSS фајлова помоћу <h:outputStylesheet> не ради, проверите да ли вам у документу пише <head> уместо <h:head>.
  • Уколико NetBeans и даље распакује индекс Maven централног репозиторијума, претрага пакета приликом додавања MySQL Connector/J неће радити. У том случају, преузмите поставку пројекта са странице предмета и ископирајте цео <dependencies> таг у свој pom.xml фајл, а затим урадите десни клик на пројекат и покрените Build with Dependencies.
  • Уколико добијете поруку The Java DB location is not set correctly, можете да је игноришете јер не користите Java DB. Ипак, уколико желите да се решите ове поруке, под ServicesDatabases, десним кликом на Java DB а затим Properties можете променити Java DB Installation тако да уместо на неку претходну инсталацију GlassFish Server показује на тренутну.