gpt4 book ai didi

java - primefaces 数据表中的单选按钮和复选框

转载 作者:行者123 更新时间:2023-12-02 08:04:52 26 4
gpt4 key购买 nike

我必须将 radio 和复选框控件放入 primefaces 的 2.2.1 数据表中,但不能作为选择模式控件。我想将该控件绑定(bind)为支持 bean 的值。

例如:

A 有一些配置的列表,在该列表中一次只能有一个配置处于 Activity 状态(单选框),但每个配置都可以处于 Activity 状态或不处于 Activity 状态(选择框)。

数据表不必是可编辑的,因为我将在另一个窗口中更改值。只有控件应该位于数据表中。

这可能吗?

最佳答案

是的,我绝对有可能在数据表中一直这样做。但是,您需要记住,每一行都需要标识。您可以使用监听器的对象或参数来执行此操作:

//Backing Bean
@ViewScoped
public class TestBean
{
private ArrayList<Element> elements;
TestBean(){...}

public ArrayList<Element> getElements(){...} //Initialize things here

public class Element
{
/* getter/setter and initialization assumed */
private boolean selected;
private String radioSelection = "one";
private String[] radioChoices = new String[]{"one", "two", "three"};
public void selectMe(ActionEvent evt)
{
System.out.println("Selected -> " + this);
}
}
}

//HTML

<p:dataTable value="testBean.elements" var="element">
<p:column>
<p:commandButton value="Select" actionListener="#{element.selectMe}"
</p:column>

<p:column>
<h:selectBooleanCheckbox value="#{element.selected}" />
</p:column>

<p:column>
<h:selectOneRadio value="#{element.radioSelection}">
<f:selectItems
value="#{element.radioChoices}"
var="item"
itemLabel="#{item}"
itemValue="#{item}"
/>
</h:selectOneRadio>
</p:column>
</p:dataTable>

您可以(并且可能想要)使用元素中的 ID 或任何您喜欢的模式来使用参数。关键是记住每一行都有自己的 id,并且您正在创建一组元素,而不是单个元素。这就是你最有可能被束缚的地方。考虑到每个按钮都是一等公民,你应该能够用它做任何你想做的事。

编辑: 我添加了一个单选/复选框示例。听起来您是 JSF 新手,所以我建议您阅读 SelectItem 类并了解码合框等的工作原理。要记住的关键(正如我上面强调的那样)是您正在渲染很多组件,因此如果您共享一个值,它很容易导致您不想要的行为。封装所有内容,通常情况就很好。)您还可以将绑定(bind)视为一种可能的解决方案。这完全取决于您希望在哪里编写代码。

关于java - primefaces 数据表中的单选按钮和复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8344335/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com