gpt4 book ai didi

java - play框架的输入文本值总是传递0

转载 作者:行者123 更新时间:2023-12-01 11:57:48 24 4
gpt4 key购买 nike

我已经花了几天时间来制作游戏表单,但感到非常沮丧。我浏览了文档并使用了“Play with Java”一书,并创建了一个 userWeights 模型类:

public class UserWeights {
public HashMap<ServicesWeights, Float> userWeights = new HashMap<>();
@Constraints.Required
public String user;
@Constraints.Required
public String password;
public int sampleSize;
public int misSampleSize;
}

我的 Controller :

public class Application extends Controller {

private static final Form<UserWeights> userWeightsForm = Form.form(UserWeights.class);

public static Result index() {
return ok(index.render("Your new application is ready."));
}

public static Result finder () {

return ok(finder.render(userWeightsForm));
}

public static Result runWithUserInput () {
Form<UserWeights> boundForm = userWeightsForm.bindFromRequest();

if (boundForm.hasErrors()) {
return badRequest(index.render("FAIL"));
}
UserWeights weights = boundForm.get();

if (weights.checkboxChoices.get(0) != null && weights.checkboxChoices.get(0).equals("1")) {
runMethodA();
} else if (weights.checkboxChoices.get(1) != null && weights.checkboxChoices.get(1).equals("2")) {
runMethodB();
}

return TODO;
}

以及 View :

@(UserWeightsForm: Form[UserWeights]) 
@import helper._
@import helper.twitterBootstrap._

@main("finder") {
<h1>Please fill the required fields</h1>
@helper.form(action = routes.Application.runWithUserInput(), 'enctype -> "multipart/form-data") {
<fieldset>
<legend>Finder</legend>
@helper.inputText(UserWeightsForm("user"),'_label -> "User")
@helper.inputPassword(UserWeightsForm("password"), '_label -> "Password")
<br/>
<label for="checkboxInput">Input Type:</label><br/>

<span class="buttonSet" id="checkboxInput">
<input type = "checkbox" id = "genericCheckbox" name = 'checkboxChoices[0]' value = "1">
<label for = "genericCheckbox">Generic Sample</label>
<input type = "number" name = 'UserWeightsForm("sampleSize")' id = "genericInput" value = "@UserWeightsForm("sampleSize").value"><br/>
<input type = "checkbox" id = "misCheckbox" name = 'checkboxChoices[1]' value = "2">
<label for = "misCheckbox">MisSample</label>
<input type = "number" name = 'UserWeightsForm("misSampleSize")' id = "misInput" value = "@UserWeightsForm("misSampleSize").value"><br/>
</span>

我想要的 - 如果选择第一个复选框,用户将填写 sampleSize 文本输入字段,并且该值将绑定(bind)到表单,而 missSampleSize code> 字段将为空白/零/其他(在这种情况下我无论如何都不会使用它)。反之亦然。

问题 - 当我选中复选框并填写 sample 文本输入时,它将值 0 绑定(bind)到表单。

我尝试将 input 标记中的 value 设置为 null,将其完全删除并使用模板助手(我更愿意避免它,因为它不那么灵活) )。我不明白为什么我在文本字段中输入的数字被忽略,并且我的程序将其视为 0。

那么问题 1:如何停止填充 0 值?

问题 2 如何发送其中一个文本字段的值(sampleSizemisSampleSize),并将另一个文本字段留空,不会出现表单错误?

谢谢!

最佳答案

我使用 Scala,而不是 Java。但我认为您需要输入 id 和名称字段来匹配您的表单字段名称。它使用这些来绑定(bind)。您没有显示您的 UserWeightsForm,但您可以尝试以下操作:

    <input type="number" name='sampleSize' id="sampleSize" value="@UserWeightsForm("sampleSize").value.getOrElse("0")"><br/>
<input type="number" name='misSampleSize' id="misSampleSize" value="@UserWeightsForm("misSampleSize").value.getOrElse("0")"><br/>

我还在值上使用“getOrElse”,以防万一(可能是错误)没有值。

关于java - play框架的输入文本值总是传递0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28227194/

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