gpt4 book ai didi

jsf-2 - Primefaces 按 Enter 执行 commandButton

转载 作者:行者123 更新时间:2023-12-02 07:28:44 25 4
gpt4 key购买 nike

我正在使用 primefaces,并且遇到以下问题,我有一个工具栏,其中包含多个按钮和组件,例如 inputtext 和表单中的其他组件,但是当我在某些组件中按 Enter 键时,工具栏的第一个按钮被调用,在本例中,命令按钮“idButtomNuevo”被调用,因为它位于第一个位置。

我的代码:

almacen.xhtml

<ui:composition  
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui" >

<h:form id="idFormAlmacen" >
<p:focus context="idFormAlmacen"/>
<p:growl id="growl" showDetail="true" life="2500" for="keyAlmacen" globalOnly="true"/>
<p:panel header="Almacen" styleClass="texto-panel"/>
<ui:include src="/pages/logistica/almacen/toolbar_almacen.xhtml"/>
<ui:include src="#{almacenBean.pathbodyAlmacen}" />
</h:form>
<ui:include src="/pages/logistica/almacen/dialogos_almacen.xhtml" />
</ui:composition>

toolbar_almacen.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<p:toolbar>
<p:toolbarGroup align="left" styleClass="panelgrid-css">
<p:commandButton id="idButtomNuevo" title="Nuevo" icon="ui-icon-document" process="@this" value="Nuevo"
actionListener="#{almacenBean.limpiarAlmacen}" update="idFormAlmacen" immediate="true">
<p:resetInput target="idFormAlmacen"/>
</p:commandButton>
<p:commandButton id="idButtomGuardar" title="Guardar" icon="ui-icon-disk" action="#{almacenBean.guardarAlmacen}"
disabled="#{almacenBean.au.btGuardarDisabled}" update=":idFormAlmacen" validateClient="true" value="Guardar"/>
<p:commandButton id="idButtomEliminar" title="Eliminar" icon="ui-icon-trash" actionListener="#{almacenBean.eliminarAlmacen}"
disabled="#{almacenBean.au.btGuardarDisabled}" update="idFormAlmacen" process="@this" immediate="true"
value="Eliminar"/>
<p:commandButton id="idButtomListar" title="Listar" icon="ui-icon-grip-solid-horizontal" process="@this" value="Listar"
actionListener="#{almacenBean.listarAlmacen}" update="idFormAlmacen" immediate="true"/>
<p:commandButton id="idButtomBuscar" title="Buscar" icon="ui-icon-search" value="Buscar"
actionListener="#{almacenBean.buscarAlmacen}" immediate="true">
<p:ajax event="dialogReturn" update="idFormAlmacen"/>
</p:commandButton>
</p:toolbarGroup>
</p:toolbar>
</ui:composition>

pathbodyAlmacen =“/pages/logistica/almacen/crear_almacen.xhtml”

<ui:composition  
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui" >

<p:panel header="Datos Generales de Almacen" />
<h:panelGrid id="idPanelAlmacen1" columns="3" width="100%" border="0" columnClasses="colC1-T,colC2-T">
<p:outputLabel for="idEmpresa" value="Empresa:" style="margin-right:2px;"/>
<p:inputText id="idEmpresa" style="width:350px;" value="#{almacenBean.alVista.strEmpresa}" readonly="true"/>
<h:outputText value="&#160;&#160;&#160;"/>

<p:outputLabel for="idCodProveedor" value="Codigo:" style="margin-right:2px;"/>
<p:inputText id="idCodProveedor" value="#{almacenBean.alVista.codigo}" style="width:350px;" required="true"
requiredMessage="Ingrese Codigo ">
<p:clientValidator />
</p:inputText>
<p:message for="idCodProveedor" display="text"/>

<p:outputLabel for="idNombre" value="Nombre:" style="margin-right:2px;"/>
<p:inputText id="idNombre" value="#{almacenBean.alVista.nombre}" style="width:350px;"
required="true" requiredMessage="Ingrese Nombre de Almacen">
<p:clientValidator event="keyup" />
</p:inputText>
<p:message for="idNombre" display="text"/>
</h:panelGrid>

<h:panelGrid id="idPgDirAlmacen" columns="4" width="100%" border="0" columnClasses="colC1-T,colC2-T,colC3">
<p:outputLabel for="idInDirAlmacen" value="Direccion de Almacen:" style="margin-right:2px;" />
<p:inputText id="idInDirAlmacen" style="width:350px;" readonly="true" required="true" value="#{almacenBean.alVista.direccionAlmacen}"
requiredMessage="Ingrese direccion de Almacen"/>
<p:commandButton title="Crear Direccion Almacen" actionListener="#{almacenBean.abrirDireccionAlmacen}" process="@this"
icon="ui-icon-search" >
<p:ajax event="dialogReturn" update=":idFormAlmacen:idPgDirAlmacen"/>
</p:commandButton>
<p:message for="idInDirAlmacen" display="text"/>
</h:panelGrid>
</ui:composition>

谢谢大家

最佳答案

这不是 JSF 特定的行为,当第一次按下 Enter<input>type="submit"用来。这已经在 SO 上进行了讨论(请参阅 thisthis ),我将在此处放置这些线程中的一些建议。

Javascript 解决方案:

使用<h:form id="thisform" onkeypress="if( event.keyCode == 13){event.keyCode=0;}">在您的表格上。但是,这将阻止您在表单上使用任何默认命令,因为它会捕获按 Enter 的键。

Primefaces 解决方案:

在表单上使用一个不执行任何操作的虚拟按钮,并将其设置为表单的默认命令。

<p:defaultCommand target="dummy"/>
<p:commandButton id="dummy" process="@none" global="false" style="display:none;"/>

关于jsf-2 - Primefaces 按 Enter 执行 commandButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27268137/

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