0

我有一个页面“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”会影响处理提交?

4

1 回答 1

1

正如该属性所暗示的,它只影响渲染。如果它在页面上呈现,则该值将在表单提交时发送回 Bean。如果它正在渲染并且没有发生这种情况,那么还有其他问题。

于 2009-04-11T18:17:39.300 回答