如何在Play中将复选框绑定到布尔值!骨架

时间:2011-11-20 21:03:11

标签: java binding playframework

我正在使用Play的应用程序! Framework有一个名为gift的对象,带有一个名为Taken的布尔属性。如何在我的视图中将此值的状态显示为复选框?我试过了: -

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

基于我从自动生成的CRUD表单中看到的示例,但是当属性为True时,不检查复选框,这正是我的目标。

任何人都知道实现这个目标的正确方法吗?

3 个答案:

答案 0 :(得分:12)

接受的答案实际上并非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

答案 1 :(得分:9)

如果值为true,您只需要在复选框中设置checked值。

例如

(假设从视图发送的对象称为gift,布尔值称为Taken

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

答案 2 :(得分:0)

如果您能够使用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);
        }
    });
});