jsf-2 - 带有所需单选按钮的 PrimeFaces 数据表

标签 jsf-2 primefaces datatable radio-button required

我在一个向导选项卡中使用带有 Radiobuttons 的 PrimeFaces DataTable。可以以某种方式设置单选按钮,如 需要 ?

用户在选择带有单选按钮的 DataTable 中的一个选项之前,不应转到下一个向导选项卡。

或者你有什么想法如何解决这个问题?感谢您的回复!

JSP页面

<p:tab id="test" title="Test">
    <p:panel header="Term page">
        <p:dataTable id="collection" value="#{register.dataList}" var="dl" rowKey="#{dl.c_id}" selection="#{register.selectedTerm}"">
            <p:column selectionMode="single" style="width:2%" />
            <p:column>
                #{dl.c_id}
            </p:column>
        </p:dataTable>
    </p:panel>
</p:tab>

最佳答案

您可以在 flowListener 中检查数据选择的 <p:wizard> 单击下一个/上一个按钮时触发的标记并有条件地添加 FacesMessage :

public String onFlowProcess(FlowEvent event) {
    String current = event.getOldStep();
    String next = event.getNewStep();
    boolean proceed = true;
    if(current.equals("first") && next.equals("second") && (selectedData == null)) {
        //proceed only when data was selected and user is moving to the next step
        FacesMessage facesMessage = new FacesMessage("You need to make a selection in a datatable to proceed!");
        FacesContext.getCurrentInstance().addMessage("form:selection", facesMessage);
        proceed = false;
    }
    return proceed ? next : current;
}

下面提供了完整的示例。

风景:
<h:form id="form">
    <p:wizard widgetVar="wiz" flowListener="#{q16439053Bean.onFlowProcess}">
        <p:tab id="first" title="First">
            <p:message for="selection"/>
            <p:panel id="selection" header="Term page">
                <p:dataTable id="collection" value="#{q16439053Bean.list}" var="data" rowKey="#{data.name}" selection="#{q16439053Bean.selectedData}">
                    <p:column selectionMode="single" style="width:2%" />
                    <p:column>
                        #{data.name}
                    </p:column>
                </p:dataTable>
            </p:panel>
        </p:tab>
        <p:tab id="second" title="Second">
            Done!
        </p:tab>
    </p:wizard>
</h:form>

bean :
@ManagedBean
@ViewScoped
public class Q16439053Bean implements Serializable {

    private List<Data> list;
    private Data selectedData;

    public List<Data> getList() {
        return list;
    }

    public void setList(List<Data> list) {
        this.list = list;
    }

    public Data getSelectedData() {
        return selectedData;
    }

    public void setSelectedData(Data selectedData) {
        this.selectedData = selectedData;
    }

    public class Data {

        private String name;
        private String value;

        public Data() {
        }

        public Data(String name, String value) {
            this.name = name;
            this.value = value;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getValue() {
            return value;
        }

        public void setValue(String value) {
            this.value = value;
        }

    }

    public Q16439053Bean() {
        list = new ArrayList<Data>();
        Data d;
        d = new Data("name", "value");
        list.add(d);
        d = new Data("name1", "value1");
        list.add(d);
        d = new Data("name2", "value2");
        list.add(d);
        d = new Data("name3", "value3");
        list.add(d);
    }

    public String onFlowProcess(FlowEvent event) {
        String current = event.getOldStep();
        String next = event.getNewStep();
        boolean proceed = true;
        if(current.equals("first") && next.equals("second") && (selectedData == null)) {
            FacesMessage facesMessage = new FacesMessage("You need to make a selection in a datatable to proceed!");
            FacesContext.getCurrentInstance().addMessage("form:selection", facesMessage);
            proceed = false;
        }
        return proceed ? next : current;
    }

}

关于jsf-2 - 带有所需单选按钮的 PrimeFaces 数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16439053/

相关文章:

c# - 使用 linq 将多个求和为一种匿名类型?

netbeans - 使用 Netbeans 7.0.1、Maven 在 JSF2 中打包复合组件

deployment - 部署 JSF 2.0 项目所需的最低服务器是什么?

vue.js - 如何从 v-data-table 中获取选定的行? (Vuetify)

java - dataTable sortBy 函数不起作用(primefaces)

java - 在 primefaces 上的数据表中选择行

c# - 如何在 C# 中将 DataTable 转换为字符串?

java - 上传 .pdf、.doc 或 .docx 时出现 HTTP 错误。使用 primefaces 上传工具上传文件

jsf - 如何将参数传递给 Primefaces LazyDataModel 加载函数

jsf - 启用选择时,DataModel 必须实现 org.primefaces.model.SelectableDataModel