【发布时间】:2010-10-18 20:53:30
【问题描述】:
我有一个页面“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} 的标签中切换“渲染”属性,它会在调用 #{objectList.itemInsert} 时正常工作并填充......所以 为什么“渲染” " 影响提交的处理?
【问题讨论】: