Dec 27, 2010

Ενσωμάτωση (integration) ενός Java applet σε μια JSF σελίδα

Αν και τα Java applets είναι εντελώς εκτός μόδας, παρουσιάστηκε η ανάγκη να χρησιμοποιήσω κάποιο από αυτά σε μια ADF JSF εφαρμογή. Πιο συγκεκριμένα, υπήρξε η ανάγκη διασύνδεσης μιας σελίδας ADF με μια web camera οπότε κατέφυγα στην τεχνολογία των Java applets σε συνδυασμό με την βιβλιοθήκη Java Media Framework (JMF - http://www.oracle.com/technetwork/java/javase/tech/index-jsp-140239.html)

Προκειμένου να ενσωματώσουμε ένα Java applet σε μια JSF σελίδα, δεν έχουμε παρά να χρησιμοποιήσουμε την JSP tag library και πιο συγκεκριμένα το συστατικό jsp:plugin, ειδικά για applets. Περισσότερα για το JSP 2.0 tag library βρίσκονται στο: http://java.sun.com/products/jsp/syntax/2.0/syntaxref20.html

O κώδικας στην JSF σελίδα μας θα μοιάζει κάπως έτσι:

<jsp:plugin type="applet" code="mypackage.CameraApplet"
archive="cameraapplet.jar,jmf.jar,mediaplayer.jar" height="300"
width="400" align="bottom"
codebase="../../applet">
<jsp:fallback>
This browser does not support Applets.
</jsp:fallback>
</jsp:plugin>



Σε περίπτωση που θέλουμε να περάσουμε παραμέτρους στο applet, για παράδειγμα κάποια τιμή από τα ADF bindings μας, θα πρέπει να χρησιμοποιήσουμε το tag jsp:params και να ορίσουμε κατάλληλα την παράμετρο μας ώστε να διαβαστεί από το tag library. Μπορούμε λοιπόν, στην αρχή της σελίδας να κάνουμε τη δήλωση:

<c:set var="adfParamNbr"
value="#{bindings.ParamNbr.inputValue}"/>

που δείχνει σε μια μεταβλητή που αφορά τα bindings. Συνεπώς, η δήλωση του applet θα μεταβληθεί ως εξής ώστε να συμπεριλαμβάνει αυτή την παράμετρο μέσω Unified Expression Language.

<jsp:plugin type="applet" code="com.mni.mednext.view.applet.CameraApplet"
archive="cameraapplet.jar,jmf.jar,mediaplayer.jar" height="300"
width="400" align="bottom"
codebase="../../applet">
<jsp:params>
<jsp:param name="param1" value="${adfParamNbr}" />
</jsp:params>
<jsp:fallback>
This browser does not support Applets.
</jsp:fallback>
</jsp:plugin>

No comments: