我想在我的 JSP portlet 中显示 jFreeChart 生成的 SVG 图形。图像的大小应该与 portlet 一样宽,高度是宽度的固定因子。
我解决了这个问题,但我想知道是否有更好的方法来完成相同的任务。
我所做的:
定义一个 invisibel 元素以在渲染后查找 portlet
<div id="<%= myPortletNamespace %>test" style="display: none;"></div>
定义一个在渲染完成并且设置我的 portlet 的宽度时触发的触发器。在这里,我找到了上述元素,检查它的大小,调整包含图形的表格的大小并进行资源调用以获取图形。
Liferay.on('allPortletsReady', function() { AUI().use('node', function(A) { var test = A.one('#<%= myPortletNamespace %>test'); var parent = test.ancestor('.portlet-body');; if (parent != null){ var table_width = parent.get('offsetWidth');; <%= myResize %>(table_width); <%= myGetTableCharts %>(); } }); } );
一个问题是触发器似乎触发了 3 次,这可能会成为性能问题。
有更好的方法吗?