ПИА/JSF — разлика између измена
(Vodič sa dosadašnjim problemima i razlikama u vezi sa JSF) |
м (Ispravljen link do starih materijala za JSF) |
||
| (4 међуизмене истог корисника нису приказане) | |||
| Ред 2: | Ред 2: | ||
== Поставка == | == Поставка == | ||
Слично као на [[Информациони системи 1|Информационим системима 1]], у овом делу градива се ради са ''Jakarta EE'' технологијом, унутар ''NetBeans'' развојног окружења. На страници предмета постоји [https://rti.etf.bg.ac.rs/rti/ir4pia/materijali/vezbe/3_JSPServleti/Uputstvo_za_rad.txt упутство за поставку алата,] које се делом репродукује овде са одређеним додацима, али у зависности од године и ажурности овог водича може бити новији од препорука које се помињу овде. | Слично као на [[Информациони системи 1|Информационим системима 1]], у овом делу градива се ради са ''Jakarta EE'' технологијом, унутар ''NetBeans'' развојног окружења. На страници предмета постоји [https://rti.etf.bg.ac.rs/rti/ir4pia/materijali/vezbe/arhiva/3_JSPServleti/Uputstvo_za_rad.txt упутство за поставку алата,] које се делом репродукује овде са одређеним додацима, али у зависности од године и ажурности овог водича може бити новији од препорука које се помињу овде. | ||
Кораци како бисте поставили све алате су: | Кораци како бисте поставили све алате су: | ||
| Ред 36: | Ред 36: | ||
Поред броја, постоји пар разлика између рада са ове две верзије: | Поред броја, постоји пар разлика између рада са ове две верзије: | ||
* ''GlassFish Server'' верзија 6.2.1 не ради са JDK | * ''GlassFish Server'' верзија 6.2.1 не ради са JDK 8 | ||
* <code>javax</code> пакет је преименован у <code>jakarta</code> | * <code>javax</code> пакет је преименован у <code>jakarta</code> | ||
* <syntaxhighlight lang="java" inline>@FacesConfig</syntaxhighlight> анотација више није неопходна изнад ''bean''-ова | * <syntaxhighlight lang="java" inline>@FacesConfig</syntaxhighlight> анотација више није неопходна изнад ''bean''-ова | ||
* Валидационе поруке се неће приказивати уколико не додате <syntaxhighlight lang="xml" inline><h:messages></syntaxhighlight> у форму. | * Валидационе поруке се неће приказивати уколико не додате <syntaxhighlight lang="xml" inline><h:messages></h:messages></syntaxhighlight> у форму. | ||
* Механизам са <code>messages.properties</code> и <code>faces-config.xml</code> ради на другачији начин, или не ради уопште. Свакако, овај механизам није неопходан за колоквијум. | |||
* Предлози у вези са Java кодом унутар JSF фајлова више не раде. Препоручује се краће именовање ''bean''-ова унутар <syntaxhighlight lang="java" inline>@Named</syntaxhighlight> анотација. | |||
Не препоручује се мењање верзије у постојећем ''Java EE 8'' пројекту, већ прављење новог пројекта, копирање фајлова у њега и затим ажурирање на начин поменут изнад. | Не препоручује се мењање верзије у постојећем ''Java EE 8'' пројекту, већ прављење новог пројекта, копирање фајлова у њега и затим ажурирање на начин поменут изнад. | ||
| Ред 48: | Ред 50: | ||
* Када правите ''managed bean'', ''NetBeans'' подразумевано изгенерише код који увози <code>javax</code> пакет, и потребно је променити га на <code>jakarta</code> пакет. | * Када правите ''managed bean'', ''NetBeans'' подразумевано изгенерише код који увози <code>javax</code> пакет, и потребно је променити га на <code>jakarta</code> пакет. | ||
* Уколико грешка помиње како <code>org.glassfish.exousia.modules.locked.SimplePolicyConfiguration</code> класа не постоји, прво проверите да ли сте добро написали тагове у <code>web.xml</code>. Шансе су, такође, да вам се покреће стари ''GlassFish'' сервер. Покушајте да зауставите ''GlassFish'' сервер кроз ''Services'' таб, затим обришите све старе ''GlassFish Server'' инсталације и покрените сервер опет. | * Уколико грешка помиње како <code>org.glassfish.exousia.modules.locked.SimplePolicyConfiguration</code> класа не постоји, прво проверите да ли сте добро написали тагове у <code>web.xml</code>. Шансе су, такође, да вам се покреће стари ''GlassFish'' сервер. Покушајте да зауставите ''GlassFish'' сервер кроз ''Services'' таб, затим обришите све старе ''GlassFish Server'' инсталације и покрените сервер опет. | ||
* Уколико вам увожење CSS фајлова помоћу <syntaxhighlight lang="xml" inline><h:outputStylesheet></syntaxhighlight> не ради, проверите да ли вам у документу пише <syntaxhighlight lang="xml" inline><head></syntaxhighlight> уместо <syntaxhighlight lang="xml" inline><h:head></syntaxhighlight>. | * Уколико добијате грешку 404 одмах након прављења пројекта, проверите да ли сте добро ископирали садржај који је потребно да стоји у <code>web.xml</code> фајлу. | ||
* Уколико ''NetBeans'' и даље распакује индекс ''Maven'' централног репозиторијума, претрага пакета приликом додавања ''MySQL Connector/J'' неће радити. У том случају, | * Уколико вам се промене у CSS фајлу не виде на страници после освежавања, пробајте са <kbd>Ctrl+Shift+R</kbd>. | ||
* <code>NullPointerException</code> приликом дохватања конекције ка базу података/извршавања упитом над њом може да укаже на то да нисте додали ''MySQL Connector/J'' као библиотеку у пројекат, нисте изменили податке у <code>DB.java</code>, или су ти подаци погрешни. | |||
* Уколико вам увожење CSS фајлова помоћу <syntaxhighlight lang="xml" inline><h:outputStylesheet></syntaxhighlight> не ради, проверите да ли вам у документу пише <syntaxhighlight lang="xml" inline><head></syntaxhighlight> уместо <syntaxhighlight lang="xml" inline><h:head></syntaxhighlight> као што би требало. | |||
* Уколико ''NetBeans'' и даље распакује индекс ''Maven'' централног репозиторијума, претрага пакета приликом додавања ''MySQL Connector/J'' неће радити. У том случају, убаците следеће у <syntaxhighlight lang="xml" inline><dependencies></syntaxhighlight> таг у свом <code>pom.xml</code> фајлу: <syntaxhighlight lang="xml"> | |||
<dependency> | |||
<groupId>mysql</groupId> | |||
<artifactId>mysql-connector-java</artifactId> | |||
<version>8.0.30</version> | |||
</dependency> | |||
</syntaxhighlight> а затим урадите десни клик на пројекат и покрените ''Build with Dependencies''. | |||
* Уколико добијете поруку ''The Java DB location is not set correctly'', можете да је игноришете јер не користите ''Java DB''. Ипак, уколико желите да се решите ове поруке, под ''Services'' → ''Databases'', десним кликом на ''Java DB'' а затим ''Properties'' можете променити ''Java DB Installation'' тако да уместо на неку претходну инсталацију ''GlassFish Server'' показује на тренутну. | * Уколико добијете поруку ''The Java DB location is not set correctly'', можете да је игноришете јер не користите ''Java DB''. Ипак, уколико желите да се решите ове поруке, под ''Services'' → ''Databases'', десним кликом на ''Java DB'' а затим ''Properties'' можете променити ''Java DB Installation'' тако да уместо на неку претходну инсталацију ''GlassFish Server'' показује на тренутну. | ||
* Упозорење како је <code>com.mysql.jdbc.Driver</code> застарело име класе може бити решено тако што у <code>DB.java</code> замените то име са <code>com.mysql.cj.jdbc.Driver</code>, али не би требало да прави друге проблеме. | |||
[[Категорија:Водичи]] | [[Категорија:Водичи]] | ||
[[Категорија:ПИА]] | [[Категорија:ПИА]] | ||
Тренутна верзија на датум 30. октобар 2023. у 03:04
Java Server Faces је део градива који се обрађује током прве половине предмета. Водич испод је намењен да помогне студентима који вежбају за колоквијум, како би успешно поставили све алате, пронашли узрок неких грешки, и тако даље.
Поставка
Слично као на Информационим системима 1, у овом делу градива се ради са Jakarta EE технологијом, унутар NetBeans развојног окружења. На страници предмета постоји упутство за поставку алата, које се делом репродукује овде са одређеним додацима, али у зависности од године и ажурности овог водича може бити новији од препорука које се помињу овде.
Кораци како бисте поставили све алате су:
- Преузети и инсталирати JDK 11.0.6 за ваш оперативни систем, коришћењем инсталера
- Преузети и инсталирати NetBeans 14 развојно окружење за ваш оперативни систем, коришћењем инсталера, и током инсталације изабрати претходно инсталирани JDK
- Као на ИС1, не инсталирајте NetBeans у директоријум са размаком у путањи. Уколико га инсталирате у Program Files директоријум, реинсталирајте га.
- Унутар NetBeans, у левој траци, под Services табом, након десног клика на Servers опцију изабрати Add Server, као тип сервера одабрати GlassFish Server, одабрати верзију 6.2.1, променити путању за инсталацију уколико је потребно, сагласити се са условима коришћења и преузети GlassFish Server, затим завршити поставку сервера са подразумеваним опцијама
При прављењу пројекта, потребно је:
- Изабрати опцију за прављење новог пројекта, а унутар ње Web Application под Java with Maven категоријом
- Изабрати претходно постављени GlassFish Server као и Jakarta EE 9 Web
- Након прављења пројекта, у
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>
- Након прављења 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 8
javaxпакет је преименован уjakarta@FacesConfigанотација више није неопходна изнад bean-ова- Валидационе поруке се неће приказивати уколико не додате
<h:messages></h:messages>у форму. - Механизам са
messages.propertiesиfaces-config.xmlради на другачији начин, или не ради уопште. Свакако, овај механизам није неопходан за колоквијум. - Предлози у вези са Java кодом унутар JSF фајлова више не раде. Препоручује се краће именовање bean-ова унутар
@Namedанотација.
Не препоручује се мењање верзије у постојећем 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 инсталације и покрените сервер опет. - Уколико добијате грешку 404 одмах након прављења пројекта, проверите да ли сте добро ископирали садржај који је потребно да стоји у
web.xmlфајлу. - Уколико вам се промене у CSS фајлу не виде на страници после освежавања, пробајте са Ctrl+Shift+R.
NullPointerExceptionприликом дохватања конекције ка базу података/извршавања упитом над њом може да укаже на то да нисте додали MySQL Connector/J као библиотеку у пројекат, нисте изменили податке уDB.java, или су ти подаци погрешни.- Уколико вам увожење CSS фајлова помоћу
<h:outputStylesheet>не ради, проверите да ли вам у документу пише<head>уместо<h:head>као што би требало. - Уколико NetBeans и даље распакује индекс Maven централног репозиторијума, претрага пакета приликом додавања MySQL Connector/J неће радити. У том случају, убаците следеће у
<dependencies>таг у свомpom.xmlфајлу:а затим урадите десни клик на пројекат и покрените Build with Dependencies.<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.30</version> </dependency>
- Уколико добијете поруку The Java DB location is not set correctly, можете да је игноришете јер не користите Java DB. Ипак, уколико желите да се решите ове поруке, под Services → Databases, десним кликом на Java DB а затим Properties можете променити Java DB Installation тако да уместо на неку претходну инсталацију GlassFish Server показује на тренутну.
- Упозорење како је
com.mysql.jdbc.Driverзастарело име класе може бити решено тако што уDB.javaзамените то име саcom.mysql.cj.jdbc.Driver, али не би требало да прави друге проблеме.