Шаардлагатай зүйлс:
JDK1.4-өөс дээш, S2FlexVx.x.x.zip-ийг татаж аваад задлаад eclipse-тээ импорт хийж оруулж өгнө. [File->Import->General->Existing Projects into Workspace] flashgateway.jar энэ файл байхгүй учраас ажиллуулахад алдаа гарна. Учир нь Flex-ийн jar файлыг хамаагүй тараадаггүй ба Flex нь үнэтэй програм юм. Гэхдээ 30 хоногийн Trial Flex-үүд байдаг. Компайл хийхийн тулд "S2flex/lib" директорт "flashgateway.jar" файлыг хуулж өгнө.
Эндээс Trial хувилбарыг татаж авч болно. Жишээнд, Tomcat, Tomcat Plugin болон Flex нь JRun Integration mode гэлтгүй, Macromedia Flex mode-өөр суулгагдана. $FLEX_HOME нь Flex-ийг суулгасан газрын зам. Жишээ кодыг татаж аваад задалсны дараагаар Flex-ийн орчинг бэлдэнэ. "$FLEX_HOME/flex.war" энэ файлыг тохиромжтой газар нь задлана(jar xf flex.war). Задалсны дараагаар "s2flex-example/WEB-INF" директорт хуулна. S2Container-ийг ажиллуулахын тулд "Web.xml" файлд дараах өөрчлөлтийг хийнэ.
Application-д log4j-ээр логийг гаргахын тулд WEB-INF/flex/jars-д байгаа commons-loging.jar-ийг WEB-INF/lib-д зөөнө.
JavaBeans болон ActionScript-ийн классыг тодорхойлох
JavaBeans болон ActionScript-ийн классыг тодорхойлсноор Java болон Flex-ийн хооронд өгөгдөл солилцож чадна. Жишээнд дараах байдлаар тодорхойлсон байна.
package examples.flex;Мөн үүнд харгалзах ActionScript-ийг үүсгэнэ.
import java.io.Serializable;
public class AddDto implements Serializable {
private int arg1;
private int arg2;
private int result;
public int getArg1() {
return arg1;
}
public void setArg1(int arg1) {
this.arg1 = arg1;
}
public int getArg2() {
return arg2;
}
public void setArg2(int arg2) {
this.arg2 = arg2;
}
public int getResult() {
return result;
}
public void setResult(int result) {
this.result = result;
}
}
class examples.flex.AddDto {
var _remoteClass:String;
var arg1:Number;
var arg2:Number;
var result:Number;
function AddDto() {
_remoteClass = "examples.flex.AddDto";
}
}
Гол цэг нь дараах зүйлс юм.
- ActionScript-ийн классын нэр Java классын нэртэй таарч байх
- _remoteClass гэсэн шинж чанарыг тодорхойлох
- Байгуулагч дээр _remoteClass-д классын нэрийг зааж өгөх
- Шинж var-аар хувьсагчуудыг зарлах
- MXML файлыг root болгож package бүрээр директорт хуваана. Жишээ нь: examples.flex.AddDto гэдэг класс нь examples/flex/AddDto.as гэж тавигдах болно. Мөн WEB-INF/flex/user_classes-г root директор болгож package бүрээр директорт салгаж болно. Ерөнхийдөө user_classes гэ сэн аргаар хэрэглэх нь дээр.

Мессэжийг олон хэл дээр дэмжих
Java дээр property файлыг ашиглаж олон хэл дээр мессэжийг гаргаж чаддаг ба тэр property файлыг Flex-ээс ашиглах функц S2Flex-д бэлтгэгдсэн болно. Жишээ нь дараах маягийн property файлыг WEB-INF/classes-д бэлтд сэн гэвэл:
FLXMessages_ja.properties
EFLX0001=({0})は入力必須です
EFLX0002=バリデーションエラーです。エラーを修正してもう一度入力してください。
FLXMessages.properties
EFLX0001=({0}) is mandatory
EFLX0002=Please enter valid data in the fields with errors and try again.
Eclipse дээрээ Япон хэлээр property удирд ахыг хүсвэл эндээс property editor-ийг татаж аваад ашиглавал тохиромжтой. Дараа нь энэ property файлаа Flex талаас хэрэглэхийн тулд компонентийг dicon файлд бүртгэнэ.
Мөн уг компонентийг Flex-ээс хэрэглэхийн тулд WEB-INF/flex/flex-config.xml-д бүртгэх шаардлагатай.

Java талаас бэлтгэл дууслаа. Дараа нь Flex талын бэлтгэлийг хийнэ. Эхлээд "s2flex/as2/org" директорыг "WEB-INF/flex/user_classes"-нд бүгдийг нь хуулна. Дараа нь messageLogic-ийг дуудахын тулд RemoteObject таг-ийг тодорхойлно. Сервэр талаас буцах утга нь буцаж ирсэн үеийн процесс болгож "processMessageManager()"-ийг дуудна. "event.result"-д "MessageManager" орж ирнэ.

messageLogic нь програм ажиллах үед дуудагдана. 
import org.seasar.flex.message.*;
function initApp() {
messageLogic.getMessageManager("FLXMessages", "ja");
}
processMessageManager()-д цуглуулсан MessageManager объектыг MessageManager
классын static хувьсагчид(instance)-д хадгалж байна.
import org.seasar.flex.message.*;
class org.seasar.flex.message.MessageManager {
static var instance:MessageManager;
...
}
function processMessageManager(messageManager:MessageManager) {
MessageManager.instance = messageManager;
}
Үүнээс гадна, Validator-ийг үүсгэнэ. Validator нь, mx.validators.Validator-ээс удамшиж,
doValidation(value)-ийг гүйцэтгэнэ. Value-д орж ирсэн утга байна. Алдаа тохиолдсон үед,
Validator#validationError()-аар алдааны мэдээллийг гаргана. MessageManager объект нь
MessageManager.instance-аар зааварчлагдана. Дараа нь,
getMessage(messageCode, аргументын олонлог)-ийг зөвхөн дуудна.
import org.seasar.flex.message.*;
class RequiredFieldValidator extends mx.validators.Validator {
var fieldName:String;
function doValidation(value) : Void {
if (value == undefined || value == "") {
var args:Array = new Array();
args[0] = fieldName;
validationError("required", MessageManager.instance.getMessage("EFLX0001", args));
}
}
}
Энэ жишээнд, s2flex-example/validation-нд хадгалагдаж байна. Browser-аас
http://localhost:8080/s2flex-example/validation/ValidationApp.mxml-руу хандаад үзээрэй. Юу ч
оруулаагүй үед "validator" товчийг дарахад алдааны мессэж харагдана. Дараах байдлаар
алдааны мэдээлэл харагдах болно.
Жишээ:
Java тал дээрээ interface болон хэрэгжүүлэгчийг бэлдэнэ.
examples.flex.AddLogic
package examples.flex;
public interface AddLogic {
public int calculate(int arg1, int arg2);
public AddDto calculate2(AddDto addDto);
}
examples.flex.AddLogicImpl
package examples.flex;
public class AddLogicImpl implements AddLogic {
public int calculate(int arg1, int arg2) {
return arg1 + arg2;
}
public AddDto calculate2(AddDto addDto) {
return addDto.setResult(addDto.getArg1() + addDto.getArg2());
}
}
Компонентийг dicon файлд бүртгэнэ.
Бүртгэгдсэн компонентийг Flex-ээс дуудахаар "s2flex-example/WEB-INF/flex/flex-config.xml"-
ийн "flex-config/remote-objects/whitelist"-д дараах тэмдэглэлийг нэмнэ.
Object таг-аар компонентуудыг тодорхойлно. Source таг-аар тодорхойлох нь S2Container-р
тодорхойлсон компонентийн нэр юм. name аттрибут нь source аттрибуттай адилхан байх нь
ойлгоход хялбар боловуу. Компонентийг нэмэх тохиолдолд, object таг-г нэмнэ. Flex1.0-ийг
хэрэглэх үед, дээрх агуулгыг бичсэн файл нь
"s2flex-example/WEB-INF/flex/flex-config-s2flex.xml"-д аль хэдийн бэлтгэгдсэн учраас
"flex-config.xml"-д хуулна. Flex1.5-ийг хэрэглэх үед, адилхнаар "flex-config-s2flex15.xml"-ийг
хуулна.
Хамгийн сүүлд нь Flex програмын код. Add.mxml,Add2.xml файлыг төслийн эх директорт
хийнэ.
"RemoteObject" таг-аар Java-ийн компонентийг тодорхойлно. named аттрибутад
flex-config.xml-ийн object таг-ийн name аттрибутаар тодорхойлсон утгыг заана. id аттрибут нь,
named аттрибуттай адил байх нь ойлгоход хялбар. Дараа нь, ActionScript-ийн дотроос
компонентийн нэр, method-ийн нэрээр дуудаж чадна. {addLogic.calculate.result} байдлаар хийж
calculate method-ийн дуудан үр дүнг Label-ийн value-д автоматаар өгдөг байдлаар тохируулж
болно.
Ингээд дууслаа.
Tomcat-ийг restart хийж, Browser-с "http://localhost:8080/s2flex-example/Add.mxml"-руу хандана.
Доор JavaBeans-ийг хэрэглэсэн жишээг харуулав.
Browser-аас "http://localhost:8080/s2flex-example/Add2.mxml"-руу хандана уу.
Жишээнүүдийг эндээс татна уу.
0 件のコメント:
コメントを投稿