【发布时间】:2013-08-24 20:48:05
【问题描述】:
我浏览了 SO,并找到了一些答案,这些答案引导我更接近于获得工作单选按钮,但我现在被困住了。
我有按钮,但无法获取所选按钮的值。
我正在使用 JSF,因此#{searchFlightsBean.setDir()}
这是我目前拥有的:
<h:panelGrid>
<div class="btn-group" data-toggle-name="is_private" data-toggle="buttons-radio" >
<button type="button" value="0" class="btn" data-toggle="button">Public</button>
<button type="button" value="1" class="btn" data-toggle="button">Private</button>
</div>
<h:inputHidden id="hiddenDir" value="0" valueChangeListener="#{searchFlightsBean.setDir()}" onchange="submit()"/>
</h:panelGrid>
<script>
$(function() {
$('div.btn-group[data-toggle-name]').each(function() {
var group = $(this);
var form = group.parents('form').eq(0);
var name = group.attr('data-toggle-name');
var hidden = $('input[name="' + name + '"]', form);
$('button', group).each(function() {
var button = $(this);
button.on('click', function() {
hidden.val($(this).val());
});
if (button.val() == hidden.val()) {
button.addClass('active');
#{searchFlightsBean.setDir(button.value)}
}
});
});
});
</script>
在我的 bean 中,当调用 setDir() 时,我正在记录它接收到的值,如下所示:
public void setDir(ValueChangeEvent e) {
this.dir = e.getNewValue().toString();
log.info("NEW DIRECTION: " + this.getDir());
}
它不记录 - setDir() 永远不会被调用。由于某种原因,h:inputHidden 标签上的valueChangeListener 属性不起作用。我错过了什么吗?
【问题讨论】:
-
noone的回答真的解决了你的问题吗?对我来说,他似乎只是发布了一个完全随机的解决方案,该解决方案更多地适用于 JSF 1.x 而不是 JSF 2.x,但您将他的答案标记为已接受。您真的在使用 JSF 1.x 和 RichFaces 3.x 吗?您之前提出的问题中没有任何内容表明这一点。如果您仍然在同一个主要问题上苦苦挣扎,那么您不应该将答案标记为已接受,因此该答案根本没有帮助。
-
@BalusC 不,它并没有真正回答我的问题 - 我不接受它。我还编辑了我的问题,以使其与我目前正在尝试做的事情保持同步。要么我使用的 valueChangeListener 错误,要么我需要使用其他东西。
-
好的。只是为了确认一下,您使用的是 JSF 2.x?因此,您可以使用
<f:ajax>?
标签: jsf twitter-bootstrap radio-button