SALESFORCE1(ПЛАТФОРМА AURA): Как передать значения из кода на стороне клиента (код JavaScript) в код на стороне сервера (APEX)?

Я работаю над Salesforce1 (платформа Aura). Я пытаюсь передать значения из клиентской части (javascript) в серверный контроллер (Apex-код). Я пытался с помощью setParams(); в JavaScript и @key аннотация в Apex, но @key не поддерживается в Apex.

Заранее спасибо.

Я даю пример кода здесь...

Код приложения:

     <aura:application>
      <PlumQ:example/>
     </aura:application>

КОМПОНЕНТНЫЙ КОД:

<aura:component model="PlumQ.ExampleServerSideController">

  <aura:attribute name="firstName" type="String" default="HELLO worlD"/>

  <ui:inputtext label="Name" aura:id="id1" value="{!v.firstName}" placeholder = "enter name" />

   <ui:button label="Native Aura Button" press="{!c.echo}"/>

</aura:component>

** на стороне клиента-контроллер (JavaScript):**

 ({
   "echo" : function(component) {

          alert('in client-Side-process');

          var b =component.get("v.firstName");
          alert('firstnaaaaame:::::::::::::'+b);
           var a = component.get("m.serverEcho");
           alert('After ServerSide Process');
          a.setParams({ firstName : component.get("v.firstName") });



           a.setCallback(this, function(action) {

                        if (action.getState() === "ERROR") {
                                     alert("Server Error: " + action.getError()[0].message);
                          }
                        else{

                                     alert("From server: " + action.getReturnValue());

                       }
});

             $A.enqueueAction(a);

}})

серверный контроллер (APEX CLASS):

  public class ExampleServerSideController {


  @AuraEnabled
  public static String serverEcho(@Key("firstName") String firstName){

  System.out.println("In Example Trival controllerrrrr"+firstName);

  return ("From server: " +firstName);

   }

  }

2 ответа

Ваш код почти прав. Вам нужно только поставить кавычки (") вокруг firstName и удалите аннотацию @Key из контроллера apex. Так что ваш JS будет выглядеть так:

a.setParams({
  "firstName" : component.get("v.firstName")
});

И твоя вершина:

public static String serverEcho(String firstName)

Для этого вам не нужна нотация @key, строка должна работать.

Попробуйте поставить $A.enqueueAction(a); внутри вас закрытие вот так:

({
  "echo" : function(component) {

      alert('in client-Side-process');

      var b =component.get("v.firstName");
      alert('firstnaaaaame:::::::::::::'+b);
       var a = component.get("m.serverEcho");
       alert('After ServerSide Process');
      a.setParams({ firstName : component.get("v.firstName") });



       a.setCallback(this, function(action) {

                    if (action.getState() === "ERROR") {
                                 alert("Server Error: " + action.getError()[0].message);
                      }
                    else{

                                 alert("From server: " + action.getReturnValue());

                   }
       $A.enqueueAction(a);

      }
  });
Другие вопросы по тегам