我有一个带有primefaces的.xhtml文件,当尝试触发actionListener不起作用时,有一个带有一个commandButton的表单这是表单:
<h:form id="formCreate">
<p:dialog header="Crear" widgetVar="usuarioDlgCreate" resizable="false" id="usuDlgCreate"
showEffect="fade" hideEffect="explode" modal="true">
<h:panelGrid id="display" columns="2" cellpadding="4" style="margin:0 auto;">
<h:outputText value="Rol:" />
<p:inputText value="#{usuarioBean.usuarioSeleccionado.rolId}"/>
<h:outputText value="Nombre:" />
<p:inputText value="#{usuarioBean.usuarioSeleccionado.nomUsuario}"/>
<h:outputText value="Email:" />
<p:inputText value="#{usuarioBean.usuarioSeleccionado.email}" size="30"/>
<f:facet name="footer">
<p:separator/>
<p:commandButton id="btnNewAccept" actionListener="#{usuarioBean.create(actionEvent)}" title="Guardar" value="Guardar"/>
<p:commandButton id="btnNewCancel" oncomplete="usuarioDlgCreate.hide()" icon="ui-icon-new" title="Cancelar" value="Cancelar"/>
</f:facet>
</h:panelGrid>
</p:dialog>
</h:form>
这是我的bean方法:
public void create(ActionEvent actionEvent) {
UsuarioDao usuarioDao = new UsuarioDaoImplements();
String msg = null;
if(usuarioDao.create(this.usuarioSeleccionado)) {
msg = "Información guardada correctamente";
} else {
msg = "No ha sido posible almacenar la información";
}
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
FacesContext.getCurrentInstance().addMessage(null, message);
}
已尝试使用按钮,例如:
和没有参数ActionEvent的方法:
也喜欢这样(没有括号):
但是没有解雇这个方法,请求帮助我....非常感谢
答案 0 :(得分:1)
我有类似的问题,当我在组件中用作值表达式对象时,actionListener没有触发。提交不成功,没有显示错误消息(也没有记录)。所以我将值表达式更改为简单变量:整数,字符串等,之后为我工作。
之前:
<p:selectOneMenu value="#{formCalendarDay.airplane}">
<f:selectItems value="#{classifiers.airplanes}" var="airplane" itemLabel="#{airplane.name}" itemValue="#{airplane}"/>
</p:selectOneMenu>
修复后:
<p:selectOneMenu value="#{formCalendarDay.airplaneId}">
<f:selectItems value="#{classifiers.airplanes}" var="airplane" itemLabel="#{airplane.name}" itemValue="#{airplane.id}"/>
</p:selectOneMenu>
答案 1 :(得分:0)
首先,您应该更改您的属性:actionListener="#{usuarioBean.create}"
。
其次,请确保您使用的是javax.faces.event.ActionEvent
。
如果仍然无效,则应验证验证错误,您可以尝试添加h:messages
以查看是否出现问题。
答案 2 :(得分:0)
尝试将表单放在对话框中 - 而不是相反
答案 3 :(得分:0)
好吧,我解决了这个问题,看起来Primefaces 3.5和Glassfish 4.0并没有很好地工作,所以我改变了Primefaces 4.0并且它有效。