Jakarta ee 在p:datatable jsf2中输入key作为事件

Jakarta ee 在p:datatable jsf2中输入key作为事件,jakarta-ee,jsf-2,primefaces,Jakarta Ee,Jsf 2,Primefaces,是否可以使用事件在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="#{

是否可以使用事件在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>

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

视图

<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>

#{item.id}
#{item.name}
豆子

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;
    }

}
import java.io.Serializable;
导入java.util.ArrayList;
导入java.util.List;
导入javax.annotation.PostConstruct;
导入javax.faces.bean.ManagedBean;
导入javax.faces.bean.ViewScoped;
@ManagedBean
@视域
公共类RowSelectionBean实现可序列化{
私人名单;
private SimpleBean selectedRow;
@施工后
公共作废设置(){
列表=新的ArrayList();
添加(新SimpleBean(11,“A”);
添加(新SimpleBean(22,“B”);
增加(新SimpleBean(33,“C”);
}
公共SimpleBean getSelectedRow(){
返回selectedRow;
}
公共无效集合selectedRow(SimpleBean selectedRow){
this.selectedRow=selectedRow;
}
公共列表getList(){
退货清单;
}
}

您对此进行过测试吗?热键究竟是如何帮助datatable进行选择和更新支持bean的?我在你的桌面上没有看到任何ajax标记是的,我已经测试过了。如果您想看到ajax魔术,请在这个实时演示中尝试:注意热键组件也有ajax功能:您链接的示例有一个实际的
actionListener
或与热键关联的javascript操作,您的没有。ajax不仅仅发生了;必须有东西将值发送回。既然你已经测试过了,我想它一定是有效的。我不会撒谎的。你可以相信我,相信我。该框架非常好,它将update=“display”和process=“dt”解释为需要ajax请求。如果selectionMode=“single”和selection=“#{rowSelectionBean.selectedRow}”的数据表选中了一行,primefaces会假设您想用所选行的值更新#{rowSelectionBean.selectedRow}。