【问题标题】:JSF 1.1: question about lifecycles, why the rendering attribute influences the managed bean action below?JSF 1.1:关于生命周期的问题,为什么渲染属性会影响下面的托管 bean 操作?
【发布时间】: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} 时正常工作并填充......所以 为什么“渲染” " 影响提交的处理?

【问题讨论】:

    标签: jsf lifecycle


    【解决方案1】:

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

    【讨论】:

    • 事实上,我注意到由干净页面进行的简单测试完全符合预期,请求范围管理的 bean 不会影响呈现属性。此外,上面的表单链接到包含内的子视图,我将尝试清理一些代码。
    猜你喜欢
    • 2011-05-16
    • 2010-12-21
    • 1970-01-01
    • 2011-05-18
    • 2015-03-11
    • 2012-06-13
    • 1970-01-01
    • 2014-06-30
    • 2012-06-30
    相关资源
    最近更新 更多