首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LazyList未在ZUL页面中定义

LazyList未在ZUL页面中定义
EN

Stack Overflow用户
提问于 2021-11-29 22:55:56
回答 2查看 74关注 0票数 0

我正在尝试使用de将数据从DAO和柔性胆汁搜索查询槽传递到zul页面。但是当我打印widgetModel.orders时,上面写着.

(索引):93未定义的ReferenceError: LazyList未在window.onload处定义((索引):93)

zul页面

代码语言:javascript
复制
                window.onload = function () {
                    const myChart = new Chart(
                            document.getElementById('myChart'),
                            config
                    );

                    const test = [[${widgetModel.orders}]];
                    console.log(test);

                };

控制器类

代码语言:javascript
复制
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());

    }
}

服务类

代码语言:javascript
复制
public class customGraphService {

    @Autowired
    private OrdersDataDao ordersDataDao;

    public List<OrderModel> getAllOrders() {
        return ordersDataDao.getAllOrders();
    }

}

dao类

代码语言:javascript
复制
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;
        }

    }
}

有人知道解决办法吗?

EN

回答 2

Stack Overflow用户

发布于 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修改客户端状态,则可以在服务器端状态和客户端状态之间创建去同步,因此请谨慎进行。

票数 0
EN

Stack Overflow用户

发布于 2021-12-01 21:40:26

我找到了一个解决方案,我用GSON来压缩列表,而不是把它传递给zul页面:-)

代码语言:javascript
复制
    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;

    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70162322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档