【发布时间】:2019-08-05 10:03:41
【问题描述】:
代码 订购
public class Order {
private String id;
private BigDecimal amount;
//get set constructor constructors
}
索引控制器
@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>
错误
模板解析时出错(模板:“类路径资源[templates/orders/list.html]”)
评估 SpringEL 表达式的异常:“order.id”(模板:“orders/list” - 第 19 行,第 9 列)
EL1008E:在“reactor.core.publisher.FluxOnAssembly”类型的对象上找不到属性或字段“id” - 可能不是公共的或无效的?
我不知道如何解决这个问题,希望你能帮助我。谢谢你的回复。
【问题讨论】:
标签: spring-boot thymeleaf