gpt4 book ai didi

java - 将动态值传递给路由 URI

转载 作者:太空宇宙 更新时间:2023-11-04 07:49:59 24 4
gpt4 key购买 nike

我尝试根据文本框的内容将动态值发送到路由 URI 路径,但当我尝试时,它为 null。

这是我尝试过的:

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

我希望将文本框中输入的值传递到路由文件,但它不起作用。如果我传递一个常量字符串,例如:

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

然后我的代码工作正常,但我不想要一个常量值;我希望文本框值在路由 URI 路径中传递。

编辑

使用上面的代码,每次单击按钮并提交表单时,URL 都会包含 /.../John 名称,因为我已经对其进行了硬编码。

我想要实现的目标不是将名称硬编码为John。 URL 中的名称将来自用户在文本框中输入的内容。例如如果用户输入的名称是 Mike,则 URL 应为 /.../Mike,依此类推,根据用户文本框输入。

简单来说,我不想将值硬编码为 John,但愿意根据文本框输入使其动态化。

请让我知道如何执行此操作。

问候,

最佳答案

您正在尝试路由到尚未指定的用户名的 URL。

在页面加载时,当用户未指定 John 作为名称时,Play 不知道您想要 hello/name/John。

为了让您做您想做的事情,您需要使用 javascript 在提交时更改表单操作 url,以将操作 url 替换为 /name/(myName 输入字段的值)

或者,您可以将其拆分为两个单独的 Controller 操作。

路线:

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

应用程序.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>

关于java - 将动态值传递给路由 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14662161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com