您的具体问题是由两个事实引起的:
- 当JSF需要解码表单提交动作时,它还会检查是否呈现了组件(以防止被黑/被篡改的请求)。
- 在每个HTTP请求上都会重新创建请求范围的Bean(一个ajax请求也算作一个请求!)。
在您的特定情况下,
rendered条件已评估,
false而JSF需要解码表单提交操作,因此永远不会处理未渲染的输入/命令组件。
将bean放入视图范围应该可以修复它。下面的示例假定使用JSF2.x。
import javax.faces.bean.ManagedBean;import javax.faces.bean.ViewScoped;@ManagedBean@ViewScoped
下面的示例假定具有CDI的JSF 2.2+:
import javax.inject.Named;import javax.faces.view.ViewScoped;@Named@ViewScoped



