Подтвердить что ты не робот

Как привязать флажок к логическому в Play! фреймворк

Приложение, над которым я работаю, используя Play! Framework имеет объект, называемый даром с булевым свойством, называемым Taken. Как показать состояние этого значения в качестве флажка на моем представлении? Я пробовал: -

<input id="gift_Taken" class="" type="checkbox" name="gift.Taken" value="true"  />
<input type="hidden" name="gift.Taken" value="false" />

на основе примеров, которые я видел из автогенерированных форм CRUD, но флажок не проверяется, когда свойство True, к чему я стремлюсь.

Кто-нибудь знает правильный способ достичь этого?

4b9b3361

Ответ 1

Вам просто нужно установить значение checked напротив этого флажка, если значение истинно.

например (предполагается, что объект, отправленный из представления, называется gift, а логическое значение называется Taken.

<input id="gift_Taken" type="checkbox" name="gift.Taken" ${gift.Taken ? 'checked':''}  />

Ответ 2

Принятый ответ на самом деле не на 100% правильный, поскольку он не обрабатывает "непроверенный" случай. Для обработки обоих случаев вам нужно скрытое поле:

<input id="gift_Taken" type="checkbox" name="gift.Taken" ${gift.Taken ? 'checked':''}  />
<input type="hidden" name="gift.Taken" value="false" />

Обратите внимание, что размещение кажется важным, поэтому скрытое поле должно быть после флажка.

Написание специального тега шаблона для этого позволяет легко забыть скрытый ввод (поместите это в views/tags/checkbox.html):

<input id="${_id}" type="checkbox" name="${_name}" value="true" #{if _checked} checked="checked" #{/if}>
<input type="hidden" name="${_name}" value="false">

Затем вызовите этот шаблон следующим образом:

#{checkbox id:'gift_Taken', name: 'gift.Taken', checked: gift.Taken /}

См. также соответствующую дискуссию по списку фреймов: https://groups.google.com/forum/?fromgroups=#!topic/play-framework/HygQuYF3a8E

Ответ 3

Если вы можете использовать javascript, вы можете использовать:

$(document).ready(function() {
    $( ":checkbox" ).each(function() {
        var name = $(this).attr("name");
        if(typeof(name) != "undefined") {
            var checkboxString = "";
            checkboxString = '<input type="hidden" style="display:none;" name="'+ name +'" value="false" />'
            $(this).after(checkboxString);
        }
    });
});