UI アクションでのクライアントおよびサーバーコードの使用

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:2分
  • スクリプトを使用して、サーバー側でレコードを更新する前に、クライアント側で UI アクションがクリックされたときに入力を検証できます。ユーザーは、必須フィールドを検証してレコードを更新するのにボタンを 2 回クリックする必要はありません。

    スクリプトはクライアント側の検証のためにクライアント関数を呼び出し、合格すると UI アクションがタスクを完了します。onclick なしで実行されるコードのステートメントは 、クライアント関数が実行されなくなるまでサーバー側の関数が実行されないようにします。成功すると、サーバー側の関数が実行され、レコードが更新されます。

    // Client-side onclick function
    function resolveIncident() {
      // Set the 'Incident state' and 'State' values to 'Resolved', and display mandatory fields
      g_form.setValue('incident_state', 6);
      g_form.setValue('state', 6);
      g_form.setValue('resolved_by', g_user.userID);
    
      // Call the UI action and skip the 'onclick' function
      gsftSubmit(null, g_form.getFormElement(), 'resolve_incident'); //MUST call the 'Action name' set in this UI Action
    }
    
    // Code that runs without 'onclick'
    // Ensure call to server-side function with no browser errors
    if (typeof window == 'undefined')
      serverResolve();
    
    // Server-side function
    function serverResolve() {
      current.incident_state = IncidentState.RESOLVED;
      current.state = IncidentState.RESOLVED;
      current.resolved_by = gs.getUserID();
      current.update();
    }

    gsftSubmit(文字列 control, オブジェクト form, 文字列 action_name)

    必須フィールドを確認し、onSubmit() クライアントスクリプトを実行した後、ユーザーが UI アクションをクリックした場合と同様にフォームを送信します。単一の UI アクションでクライアント側のコードとサーバー側のコードを呼び出すことができます。

    表 : 1. パラメーター
    名前 タイプ 説明
    コントロール 文字列 ユーザーのクリックをシミュレートするフォームボタンの名前。それ以外の場合は null を使用します。
    フォーム オブジェクト オプション。送信された入力を含むフォーム要素。この値を取得するには、g_form.getFormElement() メソッドを呼び出します。
    action_name 文字列 アクション名。この値は、UI アクション [sys_ui_action] テーブルにリストされているレコードで提供されます。

    たとえば、'resolve_incident' は、インシデント [incident] テーブルの [解決] ボタンのアクション名です。