我无法理解为什么没有触发valueChangeListener。 我来到这个话题valueChangeListener Not fired when rendered/disabled attribute is added 但它没有那么多帮助。
当我的xhtml是这样的时候:
<h:inputText value="#{cm.reference}"
rendered="#{cm.endDate eq null}"
valueChangeListener="#{userDataBean.ContactMethodChanged}" />
它正在工作(我的意思是触发了valueChangeListener )
但是当我尝试这个时:
<h:inputText value="#{cm.reference}"
rendered="#{cm.contactMethodId eq param.contactMethodID}"
valueChangeListener="#{userDataBean.ContactMethodChanged}" />
它没有。
不幸的是,我需要让第二个选项正常工作。
更多信息:
我在一个h:dataTable里面,我在一个ContactMethod(cm)列表上进行迭代
UserDataBean是applicationScoped
Apache Tomcat 7.0
JSF 2.2(Mojarra 2.2.0)
感谢您的帮助。
答案 0 :(得分:0)
如果在表单提交期间未处理输入,那么这只能表示rendered
属性在处理表单提交期间未评估true
,这反过来只能意味着#{cm.contactMethodId}
已不兼容地更改(例如,因为它是请求范围的bean属性而不是视图范围的bean属性)和/或在表单提交期间不存在#{param.contactMethodID}
。
如果bean位于作业的正确范围内(否则原始的rendered
方法可能也没有用),然后在负责提交的命令按钮/链接中保留请求参数,如下所示表格应该这样做:
<h:commandButton ...>
<f:param name="contactMethodID" value="#{param.contactMethodID}" />
</h:commandButton>