2013-06-09 10 views
5

Chciałbym zarządzać zarządzanym komponentem bean, który zarządza dokumentem Notes w widoku Notes, w którym przechowuje preferencje aplikacji (np. Ścieżka na serwerze do przechowywania załączników, tytuł aplikacji, które logo wyświetlać itp.) Czy ktoś ma przykład takiego fasoli i jak powinienem go używać?Jak skonfigurować zarządzany komponent bean do pracy z dokumentem Notes?

Bieżący Załaduję bibliotekę SSJS i umieszczam wszystko w zakresie aplikacji lub zmiennych zakresu sesji.

Odpowiedz

12

Oto prosty przykład takiego zarządzanego komponentu bean.

Najpierw utwórz klasę Java. Nazwałem to "Config". Odczytuje pierwszy dokument w widoku "Konfig." I umieszcza w instancji czas (= pierwsze wywołanie) elementy w polach java. W ten sposób można odtworzyć obiekty domina po przeczytaniu wszystkich elementów i następnie zapisać wartości w pamięci.

package de.leonso; 
import java.io.Serializable; 
import lotus.domino.Database; 
import lotus.domino.Document; 
import lotus.domino.View; 
import com.ibm.xsp.extlib.util.ExtLibUtil; 

public class Config implements Serializable { 
    private static final long serialVersionUID = 1L;  
    private String applicationTitle; 
    // ... other private fields 

    public Config() throws NotesException { 
     Database db = ExtLibUtil.getCurrentSession().getCurrentDatabase(); 
     View view = db.getView("Config"); 
     Document doc = view.getFirstDocument(); 
     applicationTitle = doc.getItemValueString("ApplicationTitle"); 
     // ... read all other items and store them in private fields 
     doc.recycle(); 
     view.recycle(); 
     db.recycle(); 
    } 

    public String getApplicationTitle() { 
     return applicationTitle; 
    } 

    // ... getters for other private fields 

} 

Następny określić tę klasę Java jako zarządzany fasoli w pliku faces-config.xml:

<faces-config> 
    <managed-bean> 
    <managed-bean-name>config</managed-bean-name> 
    <managed-bean-class>de.leonso.Config</managed-bean-class> 
    <managed-bean-scope>application</managed-bean-scope> 
    </managed-bean> 
</faces-config> 

można wykorzystywać jako zakres „Aplikacja” (przykład na serwerze) lub „sesji” (instancji na użytkownika).

Następnie można użyć fasoli config w JavaScript:

#{javascript:var titel = config.applicationTitle; ...} 

lub wyrażenie Język:

#{config.applicationTitle} 

To powinno dać dobry punkt wyjścia do opracowania zaawansowaną wersję fasoli config.

+1

Ta odpowiedź wygląda naprawdę dobrze. Aby uzyskać więcej informacji, w serwisie notesjn9.com/XPages.tv znajduje się teraz kilka filmów. Jeremy hodge zrobił 3 częściowe intro. Russ Maher ma trochę treści i zrobiłem show "What are Java Beans". Wszystkie są przystosowane do XPages. W najbliższym czasie mam jeszcze kilka pokazów na ten temat. –

0

Ziarna o zasięgu aplikacji to zdecydowanie dobry sposób na zrobienie tego. Gdy będziesz już czuć się lepiej w Javie, możesz rozważyć użycie VariableResolver zamiast lub nawet wtyczki OSGi, jeśli niektóre z tych opcji są dostępne na serwerze. Opublikowaliśmy także XSnippet do pobierania wartości z xsp.properties, co może być również odpowiednie dla niektórych ustawień. http://openntf.org/s/retrieve-property-from-xsp.properties-in-nsf-server-or-notes.ini

Powiązane problemy