【问题标题】:SpelEvaluationException: EL1010E: Property or field 'messageContext' cannot be set on object of type 'RequestControlContextImpl'SpelEvaluationException: EL1010E: 不能在“RequestControlContextImpl”类型的对象上设置属性或字段“messageContext”
【发布时间】:2019-03-08 14:13:30
【问题描述】:

我正在使用 Spring Web Flow 来制作订单流程。用户必须授权 并在流程中输入他的用户名,如果用户输入另一个人的用户名,我的流程将拒绝他的订单并将“以该用户身份登录”放在消息上下文中。但是,不幸的是,我的流程因此异常而崩溃:

 org.springframework.expression.spel.SpelEvaluationException: EL1010E: Property or field 'messageContext' cannot be set on object of type 'org.springframework.webflow.engine.impl.RequestControlContextImpl' - maybe not public or not writable?

我的流程代码

<view-state id="login" >
    <transition on="loginEntered" to="lookupUser" validate="true"/>
</view-state>

<action-state id="msgcnt" >
    <evaluate expression="orderFlowService.msgCnt(messageContext)"  result="messageContext" />
    <transition on="yes" to="login" />
</action-state>

// other flows omitted 

我的 msgCnt 方法:

public boolean msgCnt(MessageContext context){
  context.addMessage(new MessageBuilder().info().source("check").defaultText("Увійдіть як цей користувач !").build());
  return true;
}

和jsp视图:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head><title>Увійдіть!</title></head>
 <body>
  <h2>Нове замовлення!</h2>
  <p/>
  <h3>Введіть ваш логін. Якщо у вас його немає,введіть як бажаєте себе 
 назвати!</h3>
  <c:forEach items="${messageContext.getMessagesBySource(check)}" 
var="message">
    <h3>${message}</h3>
  </c:forEach>
  <form:form>
    <input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}"/>
    <input type="text" name="login" /><br/>

    <input type="submit" name="_eventId_loginEntered" value="Продовжити"/>
  </form:form>
 </body>
</html>

【问题讨论】:

    标签: java spring jsp spring-webflow


    【解决方案1】:

    怀疑发生了什么是这行:

    <evaluate expression="orderFlowService.msgCnt(messageContext)"  result="messageContext" />
    

    正试图将orderFlowService.msgCnt() 的结果(这是一个布尔值“true”)直接放入一个非预期的位置,名称为“messageContext”,它甚至可能是一个现有对象。我在这里猜测一些内部结构,但认为这可能不是您的意思/需要做的?

    因为您将messageContext 传递给方法并在其中添加消息,所以我认为您根本不想指定result

    【讨论】:

    猜你喜欢
    • 2018-02-06
    • 2019-12-12
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多