在'org.springframework.webflow.engine.impl.RequestControlContextImpl'类型的对象上找不到属性或字段'httpServletRequest'

问题描述 投票:0回答:1

我有一个检查用户cookie的注册流程,为此我需要处理HttpServletRequest。我已经创建了一个方法,它将HttpServletRequest作为参数应用,我还有一个决策状态,它将请求发送到我的方法。

我的方法:

public Boolean checkCartOnExisting(HttpServletRequest request) {
    currentCookie =  Arrays.stream(request.getCookies()).filter(cok -> cok.getName().equals("book_cart")).findFirst().get();
    return Arrays.stream(request.getCookies()).anyMatch((cookie) -> cookie.getName() == "book_cart");
}

我的决定状态:

<decision-state id="checkCart">
    <if test="orderFlowService.checkCartOnExisting(httpServletRequest)" then="addUserWithCart" else="saveUser" />
</decision-state>

当我运行我的程序时,我收到此错误:

   org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'httpServletRequest' cannot be found on object of type 'org.springframework.webflow.engine.impl.RequestControlContextImpl' - maybe not public or not valid?
org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:217)
org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:104)
org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:91)
org.springframework.expression.spel.ast.MethodReference.getArguments(MethodReference.java:163)
org.springframework.expression.spel.ast.MethodReference.getValueRef(MethodReference.java:80)
org.springframework.expression.spel.ast.CompoundExpression.getValueRef(CompoundExpression.java:68)
org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:89)
org.springframework.expression.spel.ast.SpelNodeImpl.getTypedValue(SpelNodeImpl.java:114)
org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:300)
org.springframework.binding.expression.spel.SpringELExpression.getValue(SpringELExpression.java:94)
org.springframework.webflow.engine.support.DefaultTransitionCriteria.test(DefaultTransitionCriteria.java:48)
org.springframework.webflow.engine.Transition.matches(Transition.java:185)
org.springframework.webflow.engine.TransitionSet.getTransition(TransitionSet.java:124)
org.springframework.webflow.engine.TransitionableState.getRequiredTransition(TransitionableState.java:88)
org.springframework.webflow.engine.DecisionState.doEnter(DecisionState.java:51)
org.springframework.webflow.engine.State.enter(State.java:194)
java spring spring-webflow
1个回答
2
投票

在您的决策状态,您可以使用externalContext.nativeRequest

<decision-state id="checkCart">
    <if test="orderFlowService.checkCartOnExisting(externalContext.nativeRequest)" then="addUserWithCart" else="saveUser"/>
</decision-state>
© www.soinside.com 2019 - 2024. All rights reserved.