0

我有一个简单的用例p:selectOneButton

我基本上希望一个选项被选中=true,但允许用户更改。我尝试了不同的组合,只为一个设置值但没有变化。伪代码如下:

<p:selectOneButton id="options" value="#{buttonBean.number}">
<f:selectItem default="true" itemLabel="Option 1" itemValue="1" />
<f:selectItem itemLabel="Option 2" itemValue="2" />
<f:selectItem itemLabel="Option 3" itemValue="3" />
</p:selectOneButton>

我尝试了javascript无济于事,并不是因为我没有在服务器端更新它,所以我不希望它能够工作......

document.getElementById('options:0').checked = true;

干杯

4

3 回答 3

0

你可以试试:

<f:selectItem noSelectionOption="true"/>

或者,我会做什么,numberbuttonBean @PostConstruct方法中初始化:

@PostConstruct
private void postConstruct() {
    number = 1;
}
于 2012-09-19T12:48:39.753 回答
0

将 buttonBean 中的 number 属性设置为“1”。Primefaces 将默认显示与该值对应的项目,如果您选择另一个项目,则更改它。

豆:

private String number = "1";

要根据更改更新视图,您可以另外放置一个侦听器来更新表单:

<h:form id="form-id">
....
<p:selectOneButton id="options" value="#{buttonBean.number}">
<f:selectItem default="true" itemLabel="Option 1" itemValue="1" />
<f:selectItem itemLabel="Option 2" itemValue="2" />
<f:selectItem itemLabel="Option 3" itemValue="3" />
<p:ajax update=":form-id"/>
</p:selectOneButton>

这将允许您使用按钮来触发 UI 逻辑,例如显示或隐藏字段。

于 2020-01-23T13:15:44.000 回答
-1

因为我在构造后调用我的,所以我在 getter 中初始化。情况不同,请测试。我们并不总是在 postconstruct 中初始化每个值。然后,您可以在用户提交请求后运行另一个 setMethod 以从 selectOneButton 设置值,我实际上是在我的代码中这样做的。

public String getNumber () {
  number = "10"; // default value
  methodThatInitializesDefaults(); // alternatively 
  return number;
}
于 2021-02-09T02:08:22.937 回答