You need to sign in to do that
Don't have an account?
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;
-------------------------
どのような記述をされているのかがわからないので
求めている回答になるかわかりませんが
コントローラに値を渡したいということなので参考になれば
コントローラの中に以下のようなアクセスしたい項目を作って公開します
public String target {get; set;}
こうしておくとtargetという項目が公開されているので
Visualforceページで作成した画面で
<apex:inputText value="{!target}" />
↑ みたいに書いておくと
画面で入力した値がコントローラ側にわたってくるようになります
これが答えになってるかいまいちですけど
詰まっているようなら一度試してみてください