Я работаю над игровой формой в течение нескольких дней и крайне расстроен. Я прошел через документации и использовал "Игра с Java" книги, и создал userWeights класс модели:Формат входного текста для входного текста всегда равен 0
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;
}
Мой контроллер:
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;
}
И вид:
@(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
, и это значение будет ограничено формой, а поле misSampleSize
будет bla nk/zero/whatever (в этом случае я все равно не использую его). И наоборот.
Проблема. Когда я устанавливаю флажок и заполняю ввод текста sample
, он связывает значение 0 с формой.
Я пробовал установить value
в теге input
равным нулю, удалив его полностью и используя вспомогательный шаблон (я предпочитаю избегать его, потому что он не так гибкий). Я не могу понять, почему число, которое я вводил в текстовое поле, игнорируется, и мои программы считают его 0.
So вопрос 1: Как остановить заполняемое значение 0?
вопрос 2 Как я могу отправить значение одного из текстовых полей (sampleSize
или misSampleSize
), и оставить другой один пустой, без получения ошибок формы?
Спасибо!
В Java имя ввода должно совпадать с именем поля формы. Так что это должно быть 'name =" sampleSize "' – Sivakumar
Спасибо @Sivakumar – wwkudu
Спасибо за ответ, но он не работает. Он не будет компилироваться с помощью getOrElse(), и когда я укажу только имена полей, как вы предлагали, я получаю исключение во время выполнения - [IllegalStateException: No value]. – Ozilophile