How do I bind a checkbox to a boolean in Play! framework

前端 未结 3 1511
轮回少年
轮回少年 2021-02-19 19:34

An app I\'m working on using the Play! Framework has an object called gift with a boolean property, called Taken. How do I show the state of this value as a checkbox on my view

相关标签:
3条回答
  • 2021-02-19 20:07

    If you are able to use javascript, you can use:

    $(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);
            }
        });
    });
    
    0 讨论(0)
  • 2021-02-19 20:14

    You just need to set the checked value against the checkbox, if the value is true.

    for example (assuming the object sent in from the view is called gift, and the boolean value is called Taken.

    <input id="gift_Taken" type="checkbox" name="gift.Taken" ${gift.Taken ? 'checked':''}  />
    
    0 讨论(0)
  • 2021-02-19 20:21

    The accepted answer is actually not 100% correct as it doesn't handle the "unchecked" case. To handle both cases you need a hidden field:

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

    Note that the placement seems to be important, so the hidden field must be after the checkbox.

    Writing a custom template tag for this, makes it easy not to forget the hidden input (put this into 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">
    

    Then call this template like this:

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

    See also the related discussion on the play framework list: https://groups.google.com/forum/?fromgroups=#!topic/play-framework/HygQuYF3a8E

    0 讨论(0)
提交回复
热议问题