-
- 画面から、ServerのTransactionを呼び出す例を下記に示します。
private void jB_EnterActionPerformed(java.awt.event.ActionEvent evt) {
RequestData requestData = RequestDataFactory.createRequestData("vdri",null,formManager);
requestData.setParam("_cat",cat);
requestData.setParam("_mode", formManager.getMode());
formManager.getSession().trxExecute(requestData, formManager);
}
- RequestDataFactory#createRequestData(String transactionCode, String params, FormManager formManager) は、3つの
パラメーターを取ります。ServerのtransactionCodeで、この例では 「vdri」と入力していますので、現在の実装では、GolfRMIの
VdriTrxLogic#execute(RequestData requestData)が呼び出されます。paramsには、必要であれば、Parameterを”AA=BB,CC=DD"の
形式で渡すことができます。3番目は、当該画面の formManager変数を渡します。
この結果、RequestData Objectが作成され、画面にValidation設定時、HostNameが入っている Fieldの情報は、自動的にSetされます。
また、Tableの情報をSetしたい場合は、
TrxUtil#setTableDataToRequest(String tableHostName, RequestData requestData, FormManager formManager) または
TrxUtil#setAllTableDataToRequest(RequestData requestData, FormManager formManager)を使用します。
追加のParameterは、RequestData#setParam()で指定します。
それでは、VdriTrxLogicを見てみましょう。
public class VdriTrxLogic implements TransactionInterface{
private CompanyBhv bhv;
private S2Container container;
public VdriTrxLogic() {
}
public ResultData execute(RequestData requestData) {
ResultData resultData = new ResultData();
selectProcess(requestData, resultData);
return resultData;
}
private void selectProcess(RequestData requestData, ResultData resultData) {
resultData.getFormAction().setFormStack(FormAction.FormStack.RESULT);
String sCcode = (String) requestData.getField("ccode");
String mode = (String) requestData.getParam("_mode");
String cat = (String) requestData.getParam("_cat");
if ((sCcode == null || sCcode.length()== 0) && !mode.equals("C")) {
resultData.getValidationResult().add(new SimpleValidationMessage(
"必須項目が入力されていません", Severity.ERROR, "ccode"));
return;
} else if (sCcode != null && sCcode.length() > 0 ){
BigDecimal ccode = null;
try {
ccode = new BigDecimal(sCcode);
} catch (RuntimeException e) {
resultData.getValidationResult().add(new SimpleValidationMessage(
"該当Dataは見つかりません", Severity.ERROR, "ccode"));
return;
}
CompanyCB cb = new CompanyCB();
cb.query().setCat_Equal(cat);
cb.query().setCcode_Equal(ccode);
List <Company> compl = bhv.selectList(cb);
if (compl.size() == 0) {
resultData.getValidationResult().add(new SimpleValidationMessage(
"該当Dataは見つかりません", Severity.ERROR, "ccode"));
} else {
Company comp = compl.get(0);
resultData.getFormAction().setFormStack(FormStack.NEXT);
resultData.getFormAction().setForm("vdr");
resultData.setParam("_mode", mode);
resultData.setParam("_cat", cat);
resultData.setParam("_action", "Result");
if (!mode.equals("C")) {
resultData.setField("ccode",comp.getCcode().toString());
resultData.setField("version",comp.getVersionno().toString());
}
resultData.setField("shortname",comp.getShortname());
resultData.setField("name",comp.getName());
resultData.setField("telephone",comp.getTelephone());
resultData.setField("cat",comp.getCat());
}
} else {
resultData.getFormAction().setFormStack(FormStack.NEXT);
resultData.getFormAction().setForm("vdr");
resultData.setParam("_mode", mode);
resultData.setParam("_cat", cat);
resultData.setParam("_action", "Result");
resultData.setField("cat",cat);
}
}
public void setContainer(S2Container container) {
this.container = container;
bhv = (CompanyBhv) container.getComponent("companyBhv");
}
}
- resultData.getFormAction().setFormStack(FormAction.FormStack.RESULT)で、まず Defaultの次画面Modeを設定しています。
次画面Modeの詳細については、次画面指定方法の説明を参照して下さい。
resultData.getValidationResult().add(new SimpleValidationMessage("該当Dataは見つかりません", Severity.ERROR, "ccode"));
が、ErrorMessageの追加例です。この場合、HostNameが「ccode」のFieldにFocusが自動的に移ります。
resultData.getFormAction().setFormStack(FormStack.NEXT);以下が、新しい画面に移る例です。
この様に、必要なParameter等を設定すればあとはFrameworkが自動的に面倒な処理は行います。
下記がTableにDataを設定する例です。(VdrsTrxLogicより抜粋)
resultData.getFormAction().setFormStack(FormAction.FormStack.NEXT);
resultData.getFormAction().setForm("vdrsd");
resultData.setParam("_cat", requestData.getField("cat"));
TableData td = new TableData();
td.setColumnIdentifires(new Object[]{"ccode","shortname","name","telephone","cat","versionno" });
for(Company comp:compl) {
ArrayList row = new ArrayList();
row.add(comp.getCcode());
row.add(comp.getShortname());
row.add(comp.getName());
row.add(comp.getTelephone());
row.add(comp.getCat());
row.add(comp.getVersionno().intValue());
td.addRow(row);
}
resultData.getTables().put("CompanyTable",td);
- FormAction.FormStack.NEXTの場合,下記の例の様にsetFormで指定した Formが作成されそのinitActionのParameterの_result
に ResultDataが渡されます。以下の例では、そのResultDataのTableDataをTableにSetしています。
TrxUtil.setTableDataFromResult( "CompanyTable", (ResultData)params.get("_resultData"), formManager);(VdrsdFrameの例)
また、FormAction.FormStack.RESULT等の場合で、resultData.getFormAction().setProcessAction(true);とすることにより、
そのformのprocessAction()が自動的に呼ばれます。
- Golf 概要
- GOLF HOMEへのリンク
|