1

テキストボックスの内容に基づいて動的な値をRoutesURIパスに送信しようとしていますが、試行するとnullとして表示されます。

これは私が試したものです:

<form action="@{Application.hello(myName)}" method="get">
Name: <input type="text" name="myName">
<input type="submit" value="Submit">
</form>

テキストボックスに入力した値をroutesファイルに渡したいのですが、機能しません。次のような定数文字列を渡すと、次のようになります。

<form action="@{Application.hello('John')}" method="get">
Name: <input type="text" name="myName">
<input type="submit" value="Submit">
</form>

その後、私のコードは正常に機能していますが、定数値は必要ありません。テキストボックスの値をroutesURIパスで渡す必要があります。

編集

上記のコードでは、ボタンがクリックされてフォームが送信されるたびに、/.../Johnハードコーディングしたのと同じようにURLに名前が含まれます。

私が達成したいのは、名前をにハードコーディングしないことJohnです。URLの名前は、ユーザーがテキストボックスに入力したものに由来します。たとえば、ユーザーが入力した名前がの場合Mike、URLは/.../Mike、ユーザーのテキストボックス入力に基づいたものになります。

簡単に言うと、値をハードコーディングするのではなくJohn、テキストボックスの入力に基づいて動的にすることを望んでいます。

これを行う方法を教えてください。

よろしく、

4

1 に答える 1

1

まだ指定されていないユーザー名のURLにルーティングしようとしています。

ページの読み込み時に、ユーザーが名前としてJohnを指定していない場合、Playはhello / name/Johnが必要であることを認識しません。

やりたいことをするために、javascriptを使用して、送信時にフォームのアクションURLを変更し、アクションURLを次のように置き換えます。/name/(value of myName input field)

または、これを2つの個別のコントローラーアクションに分割することもできます。

ルート:

POST /greet  Application.greet
GET  /users/{myName}  Application.hello

Application.java

// accepts the form request with the myName paramater
public static void greet(String myName) {
    // redirects the user to /users/{myName}
    Application.hello(myName);
}

// welcomes the user by name
public static void hello(String myName) {
    render(myName);
}

テンプレートを表示:

<-- this url should be /greet  (noted we are submitting via POST) -->
<form action="@{Application.greet()}" method="post">
Name: <input type="text" name="myName">
<input type="submit" value="Submit">
</form>
于 2013-02-02T18:51:23.033 に答える