czwartek, 22 września 2011

Fatalne czcionki NetBeans w Ubuntu

Nie da się na to patrzeć.
1. Zmiana poprzez "Tools->Options->Fonts" (mam anglojęzyczne NetBeans) daje jedynie zmiany tekstu w oknie edytora. Warto Dejavu Sans Mono 12.

Zmiana czcionki środowiska najłatwiejsza jest przez zmianę preferencji Ubuntu. "System->Preferencje->Ekran->Czcionki" polecam Dejavu Sans Book 10. Domyślna czcionka ubuntu daje kiepskie efekty.

2. Można jeszcze zmienić ustawienie w "netbeans.conf" i w linii: netbeans_default_options=

dodać na końcu:  --laf Nimbus -J-Dswing.aatext=true -J-Dawt.useSystemAAFontSettings=lcd

3. Ubuntu 16.04
a) instalacja gnome tweak
b) wybór czcionki w pozycji interfejs, np. Arial 11

środa, 21 września 2011

The form component needs to have a UIForm in its ancestry. Suggestion: enclose the necessary components within

When you see
The form component needs to have a UIForm in its ancestry. Suggestion: enclose the necessary components within <h:form>
in your NetBeans web application, change web.xml from:
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>



To:
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Production</param-value>
    </context-param>



wtorek, 20 września 2011

Przekazywanie wartości z primefaces dataTable

Aby przekazać wartości wybranego z tabeli wiersza, do na przykład formularza edycji wartości tego wiersza, wystarczy w przypadku dataTable primefaces skorzystać z zaleconego mechanizmu, np:

<p:dataTable var="car" value="#{carBean.cars}" selectionMode="single" selection="#{carBean.selectedCar}">
   
...columns
</p:dataTable>
carBean to oczywiście managed bean z właściwością/polem selectedCar, posiadającym właściwy get i set.

Wystarczy teraz umieścić przycisk wywołujący formularz, który odwoła się do pól/pola beanu carBean. np:
<p:commandButton value="Edit" action="/car/editCar"/>
Jednakże odwołanie na stronie editCar do pól beana carBean, zwrócić może niechybnie null, mimo, że dopiero co były ustawione na właściwe wartości.

Rozwiązanie tkwi w deklaracji zakresu beana, a ściślej w użytej do tej deklaracji bibliotece. Jeśli bean jest @SessionScoped, to należy użyć
import javax.enterprise.context.SessionScoped;
Natomiast użycie:
import javax.faces.bean.SessionScoped;
sprawi, że nie zobaczymy wcześniej ustawionych wartości.

NetBeans, facelets, jsf i znikający css.

Gdy w projekcie opartym o JSF, umieścimy klientów template, w innych katalogach niźli sam template, to szybko może się okazać, że całe opisanie strony w przywołanych w template plikach css, nie pokazuje się wcale w stronach "klienckich".

Objaw: na stronach będących klientami template, brak formatowania css.

Dzieje się tak z powodu sposobu zapisu odwołania do arkuszy stylów css, jaki stosuje wizard NetBeans przy tworzeniu template. Ten sposób to:
<link href="./resources/css/default.css" rel="stylesheet" type="text/css"/>
Zapis powyższy wskazuje, iż arkusz stylów (styli) (ze stylami) znajduje się w podkatalogu "/resources/css" katalogu aktualnie wyświetlanej strony.

Gdy strona znajduje się w innym katalogu niż template, którego jest klientem, nie ma mowy aby zostały na niej zobaczone style css, włączone w templacie.

Rozwiązaniem jest zmiana wskazania arkuszy css w template, na następujące:
<h:outputStylesheet name="default.css" library="css"/>
Wówczas jeśli "default.css znajduje się w podkatalogu /resources/css stron www, style css będą widoczne w stronach klienckich.