function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Nobu.SNobu.S 

Visualforce Page:javascriptからのApexコントローラ変数の取得

Visualforce Pageのjavascriptでコントローラの変数の値を取得しようとした場合に、意図した値が取れません。

具体的には、以下のコードにてコマンドボタンを押してメソッドを実行した際に、Apex:outputTextには意図したresultMessage ("Hello" + userName)の値が出力されますが、scriptでのアラートメッセージとしてのresultMessageには何も表示されません(null値のまま)。

この違いは何に起因するものでしょうか?ご教示いただければ幸いです。
<apex:page controller="HelloCtrl">
    <script>
    function showMessage(){
        alert("{!resultMessage}");
    }
    </script>
    <h1>Greeting!</h1>
    <apex:form id="frm">
        Your Name
        <apex:inputText label="name" value="{!userName}"/>
        <apex:commandButton value="showMsg" action="{!createMessage}" oncomplete="showMessage()" reRender="frm" />
        <apex:outputtext value="{!resultMessage}" />
    </apex:form>
</apex:page>
public class HelloCtrl {
    public String initialMessage;
    public String userName{get;set;}
    public String resultMessage{get;set;}
    
    public HelloCtrl(){
        initialMessage = 'Hello ';
    }   
    
    public Pagereference createMessage(){
        if(userName != null){
            resultMessage = initialMessage + userName;
        }else{
            resultMessage = initialMessage;
        } 
        return null;
    }
    
}

 
Best Answer chosen by Nobu.S
karthikeyan perumalkarthikeyan perumal
Hello, 

以下のようにあなたのVisualforceページを更新し (Update you Visualforce page Like below)
 
<apex:page controller="HelloCtrl">    
    <h1>Greeting!</h1>
    <apex:form id="frm">
    <script>
    function showMessage(){
        alert("{!resultMessage}");
    }
    </script>
        Your Name
        <apex:inputText label="name" value="{!userName}"/>
        <apex:commandButton value="showMsg" action="{!createMessage}" oncomplete="showMessage()" reRender="frm" />
        <apex:outputtext value="{!resultMessage}" />
    </apex:form>
</apex:page>

User-added image

私は、これはあなたを助けることを願っています.

マーク・ベスト答えるとあなたのための作品( Mark Best ANSWER if its works for you). 

ありがとうございました

Karthik

 

All Answers

karthikeyan perumalkarthikeyan perumal
Hello, 

以下のようにあなたのVisualforceページを更新し (Update you Visualforce page Like below)
 
<apex:page controller="HelloCtrl">    
    <h1>Greeting!</h1>
    <apex:form id="frm">
    <script>
    function showMessage(){
        alert("{!resultMessage}");
    }
    </script>
        Your Name
        <apex:inputText label="name" value="{!userName}"/>
        <apex:commandButton value="showMsg" action="{!createMessage}" oncomplete="showMessage()" reRender="frm" />
        <apex:outputtext value="{!resultMessage}" />
    </apex:form>
</apex:page>

User-added image

私は、これはあなたを助けることを願っています.

マーク・ベスト答えるとあなたのための作品( Mark Best ANSWER if its works for you). 

ありがとうございました

Karthik

 
This was selected as the best answer
Nobu.SNobu.S
Thanks Karthik!
I understood that I need to include script within form to bind them.