我有一个页面“start.jsf”,它指向一个动作#{ruler.start},这个动作将请求转发到“flow.jsf”。
托管 bean “ ruler”(请求范围)包含一些属性,其中之一称为“ruler.operation”,正确填充到“start.jsf”中。
页面“flow.jsf”有一个命令按钮,指向另一个名为“objectList”(会话范围)的托管 bean,其中包含一个名为“objectList.selectedContractor”的属性对象(在构造函数中初始化的 POJO,因此其子属性始终为空仅在第一次MB调用时,或错误?),它的动作是#{objectList.itemInsert}。
“flow.jsf”的表单页面包含以下标签:
<h:form>
<h:inputText id="crnameNew" value="#{objectList.selectedContractor.crname}" rendered="#{ruler.operation eq ruler.codeOperationNew}" />
<h:inputText id="someProp" value="#{objectList.someProp}" />
<h:commandButton styleClass="importedButton" value="insert" action="#{objectList.itemInsert}" />
</h:form>
好吧,当我提交动作 #{objectList.itemInsert} 时,只有“someProp”正确填充到 MB 中,而“selectedContractor.crname”结果为空。
但是,如果我从绑定 #{objectList.selectedContractor.crname} 的标签中切换“rendered”属性,它会在调用 #{objectList.itemInsert} 时正常工作并正确填充......那么为什么“rendered”会影响处理提交?