当前位置: 首页 > 知识库问答 >
问题:

模板分析期间出错

尹正奇
2023-03-14

代码顺序

public class Order {
    private String id;
    private BigDecimal amount;
//get set constructor constructors
}

IndexController

@Controller
public class IndexController {
    @GetMapping
    public String index() {
        return "index";
    }
}

订单控制器

@Controller
@RequestMapping("/orders")
public class OrderController {
    private final OrderService orderService;

    public OrderController(OrderService orderService) {
        this.orderService = orderService;
    }

    @GetMapping
    public Mono<String> list(Model model) {
        var orders = orderService.orders();
        model.addAttribute("orders", orders);
        return Mono.just("orders/list");
    }
}

订单生成器

public class OrderGenerator {
    public Order generate() {
        var amount = ThreadLocalRandom.current().nextDouble(1000.00);
        return new Order(UUID.randomUUID().toString(), BigDecimal.valueOf(amount));
    }
}

订单服务

@Service
public class OrderService {

    private final Map<String, Order> orders = new ConcurrentHashMap<>(10);

    @PostConstruct
    public void init() {
        var generator = new OrderGenerator();
        for (int i = 0; i < 25; i++) {
            var order = generator.generate();
            orders.put(order.getId(), order);
        }
    }

    public Mono<Order> findById(String id) {
        return Mono.justOrEmpty(orders.get(id));
    }

    public Mono<Order> save(Mono<Order> order) {
        return order.map(this::save);
    }

    private Order save(Order order) {
        orders.put(order.getId(), order);
        return order;
    }

    public Flux<Order> orders() {
        return Flux.fromIterable(orders.values()).delayElements(Duration.ofMillis(128));
    }
}

html

<body>
    <h1>Orders</h1>
    <table>
        <thead>
            <tr>
                <th></th>
                <th>Id</th>
                <th>Amount</th>
            </tr>
        </thead>
        <tbody>
            <tr th:each="order : ${orders}">
                <td th:text="${order.id}"></td>
                <td th:text="${#numbers.formatCurrency(order.amount)}"
                    style="text-align: right"></td>
            </tr>
        </tbody>
    </table>
</body>

错误

模板解析时出错(模板:"类路径资源[模板/订单/list.html]")

评估SpringEL表达式的异常:“order.id”(模板:“订单/列表”-第19行,第9栏)

EL1008E:在“reactor.core.publisher”类型的对象上找不到属性或字段“id”。FluxOnAssembly’-可能不是公共的或无效的?

我不知道该如何解决这个问题,希望你能帮我。谢谢你的回复。

共有2个答案

越学博
2023-03-14

检查您使用的是spring boot starter webflux,而不是spring boot starter web

有骏奇
2023-03-14

您需要将反应性原语(如Flux和Mono)添加为IReactiveDataDriverContextVariable。

IReactiveDataDriverContextVariable reactiveDataDrivenMode =
            new ReactiveDataDriverContextVariable(orders);

    model.addAttribute("orders", reactiveDataDrivenMode);
 类似资料:
  • 我目前在使用springboot时遇到问题,并出现错误“模板解析期间发生错误(template:“class path resource[templates/mainpage.html])”。 我曾尝试重新安装不同版本的lombok,因为我认为这可能是问题所在,但迄今为止似乎没有任何效果。我使用gradle和Eclipse作为IDE。感谢您的任何帮助,因为不同的springBootVersions

  • 我正在尝试打开我的html页面,但每当我尝试访问本地主机时,我都会遇到这些错误。 白标签错误页面 我将附上所涉及的文件: 家庭控制器: 用户域类: 索引.html:

  • 我创建了带有模块(Patients、Notes、Reports、Domain)的Maven多模块应用程序。问题出在使用MongoDB的模块Notes中。 我想运行GET addNote视图时遇到了问题-@GetMapping(“/note/add/{patientId}”)。GET注释列表视图工作正常,其他视图我也有。 控制台问题: 注意控制器: 病人注意: 注意: 注意存储库: 模板-注释/ad

  • 我刚刚开始使用springboot,我被这个问题卡住了。没有数据通过控制器。我只想跳转到“index.html”页面,这是一个模板,从bootstrap下载。 这是我的控制器。 index.html. 堆栈跟踪如下。 我想知道我的依赖关系有什么问题吗?

  • 我不知道我的视图出了什么问题,但它不可能工作,即使设置正确,视图也总是出错。我不知道是否还有其他方法可以做到这一点,但胸腔总是失败。 错误是这样的- 这是我的控制器 我的观点

  • 我的angular 2组件有以下模板,但它抛出了一个模板解析错误。 这是错误消息-我的