Изучение различных подходов к передаче перечисления в @AuraEnabled в компонентах Salesforce Aura

Компоненты Salesforce Aura предоставляют мощную основу для создания динамических и интерактивных пользовательских интерфейсов. Одним из распространенных требований является передача значения перечисления со стороны клиента на контроллер на стороне сервера с помощью аннотации @AuraEnabled. В этом сообщении блога мы рассмотрим различные методы достижения этой цели, а также примеры кода и разговорные объяснения, которые помогут вам понять и реализовать желаемые функции в ваших компонентах Salesforce Aura.

Метод 1: передача значений перечисления с помощью строк
Один простой подход — передать значение перечисления в виде строки со стороны клиента, а затем преобразовать его в тип перечисления в контроллере на стороне сервера. Вот пример фрагмента кода:

// Client-side JavaScript
var enumValue = 'ENUM_VALUE'; // Replace with the actual enum value
var action = component.get('c.serverMethod');
action.setParams({ enumParam: enumValue });
// Server-side Apex controller
@AuraEnabled
public static void serverMethod(String enumParam) {
    MyEnum enumValue = (MyEnum)Enum.valueOf(MyEnum.class, enumParam);
    // Rest of the code
}

Метод 2: использование пользовательских атрибутов
Другой подход — определить пользовательский атрибут в компоненте и привязать к нему значение перечисления. Затем контроллер на стороне сервера может напрямую получить доступ к значению атрибута. Вот пример:

// Client-side JavaScript
component.set('v.enumValue', 'ENUM_VALUE'); // Replace with the actual enum value
var action = component.get('c.serverMethod');
<!-- Aura component markup -->
<aura:attribute name="enumValue" type="String" />
// Server-side Apex controller
@AuraEnabled
public static void serverMethod() {
    String enumValue = (String)component.get('v.enumValue');
    MyEnum enumParam = MyEnum.valueOf(enumValue);
    // Rest of the code
}

Метод 3: использование карт JavaScript
Вы также можете использовать карты JavaScript для сопоставления строк со значениями перечисления на стороне клиента перед передачей их на сторону сервера. Вот пример:

// Client-side JavaScript
var enumMap = {
    'ENUM_VALUE_1': 'ENUM_CONSTANT_1',
    'ENUM_VALUE_2': 'ENUM_CONSTANT_2',
    // Add more mappings as needed
};
var enumValue = 'ENUM_VALUE_1'; // Replace with the actual enum value
var action = component.get('c.serverMethod');
action.setParams({ enumParam: enumMap[enumValue] });
// Server-side Apex controller
@AuraEnabled
public static void serverMethod(String enumParam) {
    MyEnum enumValue = MyEnum.valueOf(enumParam);
    // Rest of the code
}

Передать перечисление в @AuraEnabledв компонентах Salesforce Aura можно разными способами. Используя строки, пользовательские атрибуты или карты JavaScript, вы можете легко передавать значения перечислений со стороны клиента на контроллер на стороне сервера. Понимание этих методов позволит вам создавать надежные и гибкие компоненты Aura, отвечающие конкретным потребностям вашего бизнеса.