当前位置: 首页 > 面试题库 >

如何访问流外部的Spring Webflow FlowScope元素?

潘佐
2023-03-14
问题内容

编辑:我没有得到任何关于这个问题的咬,所以我添加了更多细节。

我有一个Spring
Webflow应用程序(版本2.3.2)。我需要从步骤之一的验证内部访问多个FlowScope对象(而不是在流程本身内部)。您会认为这很简单,但是我还无法破解。

Spring Webflow提供了一系列特殊的EL变量,可用于访问各种范围,但只能 流本身 内部 。在自定义的Spring验证器中,似乎没有任何途径可以到达它们:

@Component
public class MyObjectValidator {

    @Autowired
    ApplicationContext context;

    public void validateMyObject(MyObject myObject, Errors errors) {

        FlowScope flowScope = context.someMagicFunction();  //  <---- UNKNOWN  
        MyOtherObject otherObject = flowScope.get("otherObject");

        if (incrediblyComplexValidation(myObject, otherObject) {
            errors.rejectValue("myField","validation.fail","Your object failed validation.");
        }
    }
}

如您所见,在Spring Webflow Validator中,除了您要验证的对象之外,没有任何直接的外部链接。我需要转到flowScope中的其他对象。理想情况下,必须通过ApplicationContext某种或其他环境特征来找到到达这些其他对象的方法。

有人知道答案吗?


问题答案:

您可以从RequestContext-用于特定于请求的状态当前Web应用程序上下文的上下文持有者获取范围Bean。通过以下方法访问验证器方法中的请求上下文:

    import org.springframework.webflow.execution.RequestContext;
    import org.springframework.webflow.executhtml" target="_blank">ion.RequestContextHolder;

    RequestContext requestContext = RequestContextHolder.getRequestContext();
    requestContext.getFlowScope().get("objectYouAreLookingFor");


 类似资料:
  • 下面是静态嵌套类

  • 问题内容: 是否可以从Java内部类中获取对它的引用? 即 问题答案: 您可以像这样访问外部类的实例:

  • 问题内容: 我的应用程序在$ rootScope中初始化一个对象图,如下所示: …然后使用该对象图中的数据(仅1向绑定),就像这样… 这项工作正常,但是如果我随后(在页面渲染完成之后)尝试更新$ rootScope并将原始对象替换为新对象,则将其忽略。我最初以为这是因为AngularJS保留了对原始对象的引用,即使我已经替换了它。 但是,如果将使用方的HTML包装在控制器中,则可以按预期的方式重复

  • 外部访问容器 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。 当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。 使用 docker container ls 可以看到,本地主机的 49155 被映射到了容器的 5000 端口。此时访问本机的 49155 端口即可访问容器内 web 应

  • 问题内容: 为什么我不能从ReactJS的“外部”访问组件方法?为什么不可能,有什么办法解决呢? 考虑一下代码: 问题答案: React通过attribute提供了一个您要尝试执行的操作的接口。给组件分配一个,其属性将是您的自定义组件: 注意 :仅根据下面的文档,如果子组件被声明为类,则此方法才有效:https : //facebook.github.io/react/docs/refs-and-

  • 问题内容: 我正在尝试远程监控在docker中运行的JVM。配置如下所示: 机器1:在ubuntu机器上的docker中运行JVM(以我为例,运行kafka);本机的IP为10.0.1.201; 在docker中运行的应用程序位于172.17.0.85。 机器2:运行JMX监视 请注意,当我从机器2运行JMX监视时,它会失败,并显示以下错误(注意:当我运行jconsole,jvisualvm,jm