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
AyeAye 

formのinputでvisualforce ページから コントローラに値をPostする方法

お世話になります。

Visualforceページ内の<input type="text">で入力された値をコントローラに渡す方法がわからなくて困っています。

最終的には、JavaScriptを用いてform内のinput要素の数を任意に変更できる構造にしたいのですが、CGIではformのactionで対象を指定すれば、単純にPostできたのですが、Salesforceだと勝手が違い、方法がわからなくてずっと悩んでます。
ご助力お願いします。

Setterとかいうものが関係しているのかと考えたのですが、ドキュメントとにらめっこしてもさっぱりでした。

VisualforceとApexで実現したい動作をHTMLとJavascript(+jQuery)とCGI-Perlで書いてみました。
ご助力お願いいたします。


【HTML(Input.html)コード】
-------------------------
<html>
<head>
<title>TEST</title>
<script type="text/javascript" src="jQuery.js"></script>
<script type="text/javascript" src="AddJS.js"></script>
</head>
<body>
<div id="Edit">
    <input type="text" name="EditInput" value="foo" id="EditInput" />
    <input type="button" id="AddRecord" value="+" onclick="AddThisRecord()" title="登録リストに追加" />
</div>
<div id="InsertElms">
    <form id="form" name="form" action="Output.pl" method="post">
        <div id="RecordsHead">登録リスト</div>
        <input type="submit" id="submit" value="登録" />
    </form>
    </div>
</body>
</html>

-------------------------


【JavaScript(AddJS.js)コード】
-------------------------
var RecordNo = 0;

function AddThisRecord(){
    $('#RecordsHead').after(
        '<div id="RecordNo'+RecordNo+'">'
        +'<input type="text" name="R'+RecordNo+'" id="R'+RecordNo+'" value="'+$("#EditInput").val()+'" />'
        +'</div>'
    );
    // $('#対象のID').after(追加内容); : "対象のID"要素の後方に"追加内容"を追加

    RecordNo++;
}

-------------------------


【CGI-Perl(Output.pl)コード】
-------------------------
#user/bin/perl

read(STDIN, my $input, $ENV{'CONTENT_LENGTH'});
$input =~ tr/&|=/,/;
    #formの形式"name1=value1&name2=value2&・・・"を"name1,value1,name2,value2"に置換


my %Records = split(/,/,$input);
    #Mapに"(name1,value1)(name2,value2)・・・"の組み合わせで格納


exit;
-------------------------

NM03NM03

どのような記述をされているのかがわからないので

求めている回答になるかわかりませんが

 

コントローラに値を渡したいということなので参考になれば

 

 

 

コントローラの中に以下のようなアクセスしたい項目を作って公開します

 

public String target {get; set;}

 

 

こうしておくとtargetという項目が公開されているので

Visualforceページで作成した画面で

 

<apex:inputText value="{!target}" />

 

↑ みたいに書いておくと

画面で入力した値がコントローラ側にわたってくるようになります

 

 

これが答えになってるかいまいちですけど

詰まっているようなら一度試してみてください