我正在尝试使用de将数据从DAO和柔性胆汁搜索查询槽传递到zul页面。但是当我打印widgetModel.orders时,上面写着.
(索引):93未定义的ReferenceError: LazyList未在window.onload处定义((索引):93)
zul页面
window.onload = function () {
const myChart = new Chart(
document.getElementById('myChart'),
config
);
const test = [[${widgetModel.orders}]];
console.log(test);
};控制器类
public class customGraphController extends DefaultWidgetController {
private static final long serialVersionUID = 7954736389190109887L;
@WireVariable
private transient customGraphService customGraphService;
@Override
public void preInitialize(Component comp) {
super.preInitialize(comp);
WidgetModel model = getWidgetInstanceManager().getModel();
model.put("orders", customGraphService.getAllOrders());
}
}服务类
public class customGraphService {
@Autowired
private OrdersDataDao ordersDataDao;
public List<OrderModel> getAllOrders() {
return ordersDataDao.getAllOrders();
}
}dao类
public class OrdersDataDao {
@Resource
private FlexibleSearchService flexibleSearchService;
public List<OrderModel> getAllOrders() {
final String stringQuery = "select {o.pk} from {order as o}";
final FlexibleSearchQuery query = new FlexibleSearchQuery(stringQuery);
final SearchResult<OrderModel> result = flexibleSearchService.search(query);
if (null != result.getResult()) {
return result.getResult();
} else {
return null;
}
}
}有人知道解决办法吗?
发布于 2021-11-30 03:53:28
window.onLoad操作ZK小部件总是为时尚早。一旦加载了初始文档,onLoad回调将触发,但该文档本身将加载ZK日志,初始化客户端引擎等。
如果需要“加载库之后”,可以使用zk.afterload。如果您需要在小部件实际使用之前修改框架函数,那么这个钩子是很好的。
然而,这还有待于客户端引擎对小部件进行实例化,所以如果您的目标是访问一个小部件,那还为时过早。
如果您想在小部件被添加到已初始化的页面之后对该小部件做一些事情,那么您实际上需要的是一个客户端onBind侦听器。
您可以在zul或java中设置侦听器,但最简单的方法是:https://zkfiddle.org/sample/1v9phuk/1-Another-new-ZK-fiddle
最后,如果要使用ZK的客户端API访问/修改客户端的内容,我建议查看ZK客户端选择器。比尝试通过ID手动查找元素要容易得多,而且从长远来看也要更加健壮。只有当您有一个带有实际ID "myChart“的dom元素时,ZK才能工作,这不是ZK的工作方式(不管怎么说,默认的UUID生成器都不是这样的)。相反,您可以通过ZK来选择一个小部件。
确保您知道什么是客户端(JavaScript)和什么是服务器端。
(最后)^2,请记住,在ZK体系结构中,服务器是状态的源,客户端只通过向服务器发送客户端命令来更新状态。如果使用JS修改客户端状态,则可以在服务器端状态和客户端状态之间创建去同步,因此请谨慎进行。
发布于 2021-12-01 21:40:26
我找到了一个解决方案,我用GSON来压缩列表,而不是把它传递给zul页面:-)
private Object convertAllOrderModelsToJSON() {
//get all the models
List list = customGraphService.getAllOrdersModels();
//convert models to JSON
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(list);
return json;
}https://stackoverflow.com/questions/70162322
复制相似问题