【问题标题】:enter key as event in p:datatable jsf2在 p:datatable jsf2 中输入键作为事件
【发布时间】:2023-03-11 04:05:01
【问题描述】:

是否可以使用事件在 p:datatable 中使用 enter 键选择一行?

<p:dataTable value="#{bean.list}" var="l" selection="#{bean2.user}" rowKey="#{l}" selectionMode="single">
    <p:ajax event="keyup" update="@form"/>
    <p:column>
        <h:outputText value="#{l.id}"/>
    </p:column>
</p:dataTable>

【问题讨论】:

    标签: jakarta-ee jsf-2 primefaces


    【解决方案1】:

    是的,你可以!检查此示例代码:

    观点

    <h:form id="mainForm">
        <p:dataTable id="dt" value="#{rowSelectionBean.list}" var="item" 
                     selectionMode="single" selection="#{rowSelectionBean.selectedRow}"
                     widgetVar="dtVar" rowKey="#{item.id}">
            <p:column headerText="ID">
                #{item.id}
            </p:column>
            <p:column headerText="Name">
                #{item.name}
            </p:column>
        </p:dataTable>
    
        <p:outputPanel id="display">
            <h:outputText value="Selected row: #{rowSelectionBean.selectedRow.name}" rendered="#{not empty rowSelectionBean.selectedRow}" />
        </p:outputPanel>
    
        <p:hotkey bind="return" update="display" process="dt" />
    </h:form>
    

    豆子

    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.List;
    import javax.annotation.PostConstruct;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.ViewScoped;
    
    @ManagedBean
    @ViewScoped
    public class RowSelectionBean implements Serializable {
    
        private List<SimpleBean> list;
    
        private SimpleBean selectedRow;
    
        @PostConstruct
        public void setup() {
            list = new ArrayList<SimpleBean>();
            list.add(new SimpleBean(11, "A"));
            list.add(new SimpleBean(22, "B"));
            list.add(new SimpleBean(33, "C"));
        }
    
        public SimpleBean getSelectedRow() {
            return selectedRow;
        }
    
        public void setSelectedRow(SimpleBean selectedRow) {
            this.selectedRow = selectedRow;
        }
    
        public List<SimpleBean> getList() {
            return list;
        }
    
    }
    

    【讨论】:

    • 你测试过这个吗?热键究竟如何帮助数据表进行选择并更新支持 bean?我在您的桌子上的任何地方都看不到任何 ajax 标签
    • 是的,我已经测试过了。如果你想看看 ajax 魔法,试试这个现场演示:primefaces.org/showcase/ui/datatableRowSelectionSingle.jsf
    • 请注意,热键组件也具有 ajax 功能:primefaces.org/showcase/ui/hotkey.jsf
    • 您链接的示例具有与热键关联的实际 actionListener 或 javascript 操作,而您的则没有。 ajax 不只是发生。有些东西必须将价值送回。既然你已经测试过了,我猜它一定是有效的。
    • 我不会对此撒谎。你可以相信我和 primefaces 的这个。该框架非常好,它将 update="display"process="dt" 解释为需要 ajax 请求。如果具有 selectionMode="single"selection="#{rowSelectionBean.selectedRow}" 的数据表选择了一行,primefaces 假定您要更新 #{ rowSelectionBean.selectedRow} 与所选行的值。
    猜你喜欢
    • 1970-01-01
    • 2014-02-24
    • 2017-03-07
    • 2017-10-20
    • 1970-01-01
    • 2021-09-30
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多