首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >值未在RequestScope下传递

值未在RequestScope下传递
EN

Stack Overflow用户
提问于 2012-11-02 18:29:47
回答 1查看 391关注 0票数 0

我有下面的一组页面和各自的MPB,我已经将它们组织如下。

1)

代码语言:javascript
复制
class ManagedBeanBase {
  protected String mode;
}

2) page1.xhtml

代码语言:javascript
复制
   <ui:composition>
    <ui:define name="contentArea">
        <f:metadata>
     <f:event type="preRenderView" listener="#{page1MPB.preProcess}" />
    </f:metadata>
               ...
               ...
    <h:panelGrid>
        <h:panelGroup>
            <h:commandButton value="continue" id="button_continue"
                actionListener="#{page1MPB.postProcess}" />
        </h:panelGroup>
    </h:panelGrid>
    </ui:define>
  </ui:composition>

3)

代码语言:javascript
复制
@RequestScoped
@ManagedBean(name="page1MPB")
Page1MPB extends ManagedBeanBase
{
  public void preProcess() {setMode("1");}
  public void postProcess(ActionEvent event) {
     System.out.println("MODE during submit ["+getMode()+"]);
  }

}

现在的问题是,它在提交期间显示'null‘值。

有没有人能提个建议?如果无法在提交过程中获得模式值,请让我知道替代解决方案。请注意,模式值显示在会话范围下。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-05 15:40:16

在呈现视图之前使用preRenderView,以便在显示视图的其余部分之前运行一些自定义代码(可能会显示在preRenderView中计算的值)。其余部分遵循标准作用域基础。您的托管bean是RequestScope,因此preProcess将mode设置为1,仅此而已。当您单击submit时,它将变成一个新请求,因此mode为空。更改为ViewScoped (或更高范围)以保留preRenderView的值。

下面是输出(我添加了生命周期阶段的输出):

RequestScoped:

信息:在阶段RESTORE_VIEW 1之前

信息:在阶段RESTORE_VIEW 1之后

信息:阶段RENDER_RESPONSE 6之前

INFO: preProcess 1期间的模式

INFO: preProcess 1期间的模式

信息:在阶段RENDER_RESPONSE 6之后

信息:在阶段RENDER_RESPONSE 6之后

//按“继续”

信息:在阶段RESTORE_VIEW 1之前

信息:在阶段RESTORE_VIEW 1之后

信息:在阶段APPLY_REQUEST_VALUES 2之前

信息:在阶段APPLY_REQUEST_VALUES 2之后

信息:在阶段PROCESS_VALIDATIONS 3之前

信息:在阶段PROCESS_VALIDATIONS 3之后

信息:在阶段UPDATE_MODEL_VALUES 4之前

信息:在阶段UPDATE_MODEL_VALUES 4之后

信息:阶段INVOKE_APPLICATION 5之前

信息:提交null期间的模式

信息:在阶段INVOKE_APPLICATION 5之后

信息:阶段RENDER_RESPONSE 6之前

INFO: preProcess 1期间的模式

INFO: preProcess 1期间的模式

INFO: preProcess 1期间的模式

信息:在阶段RENDER_RESPONSE 6之后

ViewScoped:

信息:在阶段RESTORE_VIEW 1之前

信息:在阶段RESTORE_VIEW 1之后

信息:阶段RENDER_RESPONSE 6之前

INFO: preProcess 1期间的模式

INFO: preProcess 1期间的模式

信息:在阶段RENDER_RESPONSE 6之后

//按“继续”

信息:在阶段RESTORE_VIEW 1之前

信息:在阶段RESTORE_VIEW 1之后

信息:在阶段APPLY_REQUEST_VALUES 2之前

信息:在阶段APPLY_REQUEST_VALUES 2之后

信息:在阶段PROCESS_VALIDATIONS 3之前

信息:在阶段PROCESS_VALIDATIONS 3之后

信息:在阶段UPDATE_MODEL_VALUES 4之前

信息:在阶段UPDATE_MODEL_VALUES 4之后

信息:阶段INVOKE_APPLICATION 5之前

信息:提交1时的模式

信息:在阶段INVOKE_APPLICATION 5之后

信息:阶段RENDER_RESPONSE 6之前

INFO: preProcess 1期间的模式

INFO: preProcess 1期间的模式

INFO: preProcess 1期间的模式

信息:在阶段RENDER_RESPONSE 6之后

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13193447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档