Jsf 2 添加inputText时未调用Action和actionlistener
添加Jsf 2 添加inputText时未调用Action和actionlistener,jsf-2,primefaces,action,Jsf 2,Primefaces,Action,添加时,不会调用的操作和操作侦听器 以下是我的看法: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"
时,不会调用
的操作
和操作侦听器
以下是我的看法:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:body>
<h:form>
<h:outputText value="Respuesta" />
<p:inputText
required="true"
value=" #{respuestaOficioBean.mrString}"/>
<p:commandButton
action="#{respuestaOficioBean.clearRespuesta}"
actionListener= "#{respuestaOficioBean.listener}"
update="growl"
value="s ss ssssssss ss ssszzs #{respuestaOficioBean.respuesta}"/>
<p:growl id="growl" showDetail="false" sticky="true" />
</h:form>
</h:body>
</html>
如果我从视图中删除
,则会打印“uuu”,并调用clearrepuesta()
中的断点。但是,如果我离开
,前一种情况都不会发生
这是如何造成的,我如何解决它?我没有立即发现问题的原因,因此我将您的代码复制粘贴到我的环境(已配置OmniFaces)中,并得到一个错误页面,其中包含以下自我解释的stacktrace:
javax.el.PropertyNotWritableException: /index.xhtml @30,44 value=" #{respuestaOficioBean.mrString}": Illegal Syntax for Set Operation
at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:136)
at javax.faces.component.UIInput.updateModel(UIInput.java:818)
at javax.faces.component.UIInput.processUpdates(UIInput.java:735)
at javax.faces.component.UIForm.processUpdates(UIForm.java:281)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1242)
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1242)
at javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:1232)
at com.sun.faces.lifecycle.UpdateModelValuesPhase.execute(UpdateModelValuesPhase.java:78)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
这在服务器日志中也可见
问题的原因是
的值属性中有一个悬空的前导空格。这对于setter方法调用来说是无效语法
删除它:
<p:inputText
required="true"
value="#{respuestaOficioBean.mrString}"/>
在将来,请更多地关注ajax请求的服务器日志和响应主体(您可以在webbrowser开发人员工具集的HTTP流量监视器中看到)。错误信息在那里是可见的。尽量在标题中减少暗示。用聪明的方式问这个问题。
<p:inputText
required="true"
value="#{respuestaOficioBean.mrString}"/>