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);
}
});